没有 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 及更高版本中启用。
附加说明:
以上是没有 GROUP BY 的 MySQL 聚合函数:为什么以及如何?的详细内容。更多信息请关注PHP中文网其他相关文章!