没有GROUP BY子句的MySQL聚合函数

亚什万斯·阿鲁鲁

在MySQL中,我观察到尽管没有GROUP BY子句,但在SELECT列表中使用AGGREGATE FUNCTION的语句被执行了。如果这样做,其他RDBMS产品(例如SQL Server)将引发错误。

例如,SELECT col1,col2,sum(col3) FROM tbl1;被执行而没有任何错误,并返回col1,col2的第一行值和col3的所有值之和。以上查询的结果是一行。

谁能告诉我为什么在MySQL中会发生这种情况?

提前致谢!!

w

这是设计使然-它是MySQL允许的标准的许多扩展之一。

对于像SELECT name, MAX(age) FROM t;参考文档这样查询,它说:

如果没有GROUP BY,则只有一个组,并且不确定为该组选择哪个名称值

有关更多信息,请参见分组处理文档

该设置可ONLY_FULL_GROUP_BY控制此行为,请参见5.1.7服务器SQL模式。启用此设置将不允许查询缺少group by语句的聚合函数,并且默认情况下从MySQL版本5.7.5开始启用该查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WHERE 子句中的 MySql GROUP BY 和聚合函数

invalid:聚合函数或GROUP BY子句

查询没有重复和聚合函数或 GROUP BY 子句问题。- REPEX

带有where子句的聚合函数

SQL Server-无效查询,因为没有聚合函数或用于比较2个日期之间的差异的group by子句

选择列表中的'Book.ISBN'列无效,因为它没有包含在聚合函数或GROUP BY子句中

MySQL 中没有 Group By

在sql查询中使用聚合函数时避免group by子句

Rails Postgres错误GROUP BY子句或在聚合函数中使用

CASE语句和GROUP BY子句中的聚合函数出错

PostgreSQL练习:GROUP BY子句或在聚合函数中使用

具有聚合函数MAX的Codeigniter Active Record HAVING子句

过滤和聚合不在group by子句MySQL中的列

FOR XML Path 查询中有关聚合函数或 group by 子句的错误

“如果没有GROUP BY子句,则对GROUP列..没有GROUP列的混合是非法的”

当一个聚合没有“ group by”子句时会发生什么?

为什么选择中没有聚合功能的列需要成为MySQL中Group by子句的一部分?

具有子句MySql的嵌套Aggregate函数

MySQL GROUP BY 没有给出想要的结果

Postgres:避免列出所有列(“必须出现在 GROUP BY 子句中或在聚合函数中使用”)

带有Postgresql的Django,列必须出现在GROUP BY子句中或在聚合函数中使用

如何在没有GROUP BY的情况下使用聚合函数?

我可以使用没有由group by引起的汇总的聚合函数吗?

MySQl错误:#1140-如果没有GROUP BY子句,则没有GROUP列的GROUP列(MIN(),MAX(),COUNT(),...)混合是非法的

列“ INVOICE.DATE_OF_ISSUE”在ORDER BY子句中无效,因为它不包含在聚合函数或GROUP BY子句中

所选项目不必出现在 GROUP BY 子句中或在聚合函数中使用

Postgres SQL:列必须出现在GROUP BY子句中或在聚合函数中使用

显示不在GROUP BY子句中的列而不在其上应用聚合函数

必须出现在GROUP BY子句中或在聚合函数中用于计数postgresql