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

DDD
发布: 2024-11-06 11:07:02
原创
840 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!