首页 >数据库 >mysql教程 >MySQL为什么不用GROUP BY就可以使用聚合函数?

MySQL为什么不用GROUP BY就可以使用聚合函数?

DDD
DDD原创
2024-11-06 11:07:02958浏览

Why Can I Use Aggregate Functions Without GROUP BY in MySQL?

MySQL 对聚合函数的独特处理,无需 GROUP BY

在 MySQL 中,与其他关系数据库管理系统不同,可以使用聚合函数在 SELECT 列表中而不指定 GROUP BY 子句。这种行为在熟悉更具限制性的 DBMS 平台的开发人员中引起了疑问。

MySQL 基本原理

MySQL 在设计上允许这种灵活性,认为它是对 SQL 的有价值的扩展标准。当在没有 GROUP BY 的情况下使用聚合函数时,返回的结果表示包含对整个表计算的聚合值的单行。这在需要汇总信息而不需要分组的情况下非常有用。

示例

例如,考虑查询:

SELECT col1, col2, SUM(col3) FROM tbl1;

如果没有 GROUP BY,MySQL 会将其解释为单个组并提供以下输出:

col1    col2    SUM(col3)
-------------------------
(First row value of col1)    (First row value of col2)    (Sum of all col3 values)

ONLY_FULL_GROUP_BY 的限制

MySQL 处理聚合的宽松方法引入了不带 GROUP BY 的函数,并将 ONLY_FULL_GROUP_BY 设置为 OFF。随着MySQL版本5.7.5的发布,默认启用ONLY_FULL_GROUP_BY,这限制了这种行为。

启用ONLY_FULL_GROUP_BY可确保聚合函数只能与GROUP BY子句结合使用,如果遇到没有它的查询。此更改符合 SQL 标准并促进数据一致性。

以上是MySQL为什么不用GROUP BY就可以使用聚合函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn