Mysql';分组依据';子句不给出错误
我的表名为“产品”,其中包含以下列Mysql';分组依据';子句不给出错误,mysql,database,postgresql,Mysql,Database,Postgresql,我的表名为“产品”,其中包含以下列 1. id 2. name 3. description 4. Price 在运行以下SQL查询时,这不会给我一个错误 select name, sum(Price) from product group by Description; 在PostgreSQL上运行此查询时,它给出了一个错误 根据“group by”子句,select子句中的列名应该是group by条件的一部分 因此,根据上面的说明,SQL查询名称应该是GROUPBY条件的一部分。您应该
1. id
2. name
3. description
4. Price
在运行以下SQL查询时,这不会给我一个错误
select name, sum(Price) from product group by Description;
在PostgreSQL上运行此查询时,它给出了一个错误
根据“group by”子句,select子句中的列名应该是group by条件的一部分
因此,根据上面的说明,SQL查询名称应该是GROUPBY条件的一部分。您应该这样编写查询 您应该只在选择列名中写入按列名分组和聚合函数
select Description, sum(Price) from product group by Description;
如果你想得到名字,你应该这样写查询
您应该在group by中添加名称
select name, sum(Price) from product group by name,Description;
如果您只想根据描述进行分组,那么您可以这样编写查询
select max(name), sum(Price) from product group by Description;
如果名称相同,您可以使用
min
或max
函数获取名称,或者只需按添加到组中即可您应该这样编写查询
您应该只在选择列名中写入按列名分组和聚合函数
select Description, sum(Price) from product group by Description;
如果你想得到名字,你应该这样写查询
您应该在group by中添加名称
select name, sum(Price) from product group by name,Description;
如果您只想根据描述进行分组,那么您可以这样编写查询
select max(name), sum(Price) from product group by Description;
如果名称相同,您可以使用
min
或max
函数获取名称或只需在MySQL中通过添加组即可。此行为可通过sql模式设置配置:
拒绝select list、HAVING CONDICTION或ORDER BY list引用的未聚合列的查询,这些列既不在GROUP BY子句中命名,也不在功能上依赖于GROUP BY列(由GROUP BY列唯一确定)
从MySQL5.7.5开始,默认的SQL模式只包括_FULL _GROUP _BY。
(在5.7.5之前,MySQL不检测函数依赖性和
默认情况下,仅\u FULL\u GROUP\u BY未启用。有关
5.7.5之前的行为,请参阅MySQL 5.6参考手册。)
在您的MySQL中,显然没有设置sql模式下的全组。如果希望MySQL拒绝查询,则需要启用此行为。实际上,我鼓励大家确保启用此sql模式,除非您真的知道自己在做什么。在MySQL中,此行为可通过sql模式设置进行配置: 拒绝select list、HAVING CONDICTION或ORDER BY list引用的未聚合列的查询,这些列既不在GROUP BY子句中命名,也不在功能上依赖于GROUP BY列(由GROUP BY列唯一确定) 从MySQL5.7.5开始,默认的SQL模式只包括_FULL _GROUP _BY。 (在5.7.5之前,MySQL不检测函数依赖性和 默认情况下,仅\u FULL\u GROUP\u BY未启用。有关 5.7.5之前的行为,请参阅MySQL 5.6参考手册。)
在您的MySQL中,显然没有设置sql模式下的全组。如果希望MySQL拒绝查询,则需要启用此行为。事实上我鼓励大家确保这个SQL模式被启用——除非你真的知道你在做什么。亲爱的MySQL是用户友好的。它不认为它是错误的,而PostgreSQL和SQL Server都必须遵循使用聚合函数的按组函数规则。亲爱的MySQL是用户友好的。它不认为它是错误的。虽然postgresql和sql server都必须遵循使用聚合函数的逐函数分组规则,但我认为您是正确的。此外,我已经通过以下链接,我认为你是正确的。此外,我已经通过以下链接