Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql';分组依据';子句不给出错误_Mysql_Database_Postgresql - Fatal编程技术网

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都必须遵循使用聚合函数的逐函数分组规则,但我认为您是正确的。此外,我已经通过以下链接,我认为你是正确的。此外,我已经通过以下链接