首页  >  文章  >  数据库  >  没有 GROUP BY 的 MySQL 聚合函数:为什么以及如何?

没有 GROUP BY 的 MySQL 聚合函数:为什么以及如何?

DDD
DDD原创
2024-11-06 05:42:02482浏览

MySQL Aggregate Functions Without GROUP BY: Why and How?

没有 GROUP BY 的 MySQL 聚合函数:为什么以及如何?

与其他关系数据库管理系统 (RDBMS) 不同,当聚合函数出现在不带 GROUP BY 子句的 SELECT 列表中,MySQL 允许这样做。这种行为引起了开发人员的兴趣,导致了以下查询:

为什么 MySQL 允许不使用 GROUP BY 的聚合函数?

答案:

MySQL 的设计理念允许超出 SQL 标准的扩展功能。允许不带 GROUP BY 的聚合函数就是这样的一个扩展。

当执行像 SELECT col1,col2,sum(col3) FROM tbl1 这样的查询时,MySQL 有效地按所有非聚合列对行进行分组(在此案例,第 1 列和第 2 列)。然后,它返回单个不确定组的聚合函数(col3 的总和)的结果。

早期版本的 MySQL 默认允许此行为。然而,从 MySQL 5.7.5 开始,引入了 ONLY_FULL_GROUP_BY SQL 模式,以强制执行更严格的 SQL 合规性,并不允许使用没有 GROUP BY 的聚合函数进行查询。可以根据需要启用或禁用此模式。默认情况下,它在 MySQL 8.0 及更高版本中启用。

附加说明:

  • MySQL 中处理 group by 的文档提供了更多详细信息
  • ONLY_FULL_GROUP_BY SQL 模式有助于确保与其他 RDBMS 的兼容性,并通过避免不必要的计算来提高性能。

以上是没有 GROUP BY 的 MySQL 聚合函数:为什么以及如何?的详细内容。更多信息请关注PHP中文网其他相关文章!

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