首页 >数据库 >mysql教程 >为什么 MySQL 可以使用没有 GROUP BY 子句的聚合函数?

为什么 MySQL 可以使用没有 GROUP BY 子句的聚合函数?

Susan Sarandon
Susan Sarandon原创
2024-11-07 12:52:03826浏览

Why Can MySQL Use Aggregate Functions Without a GROUP BY Clause?

MySQL 聚合函数:为什么不需要 GROUP BY 子句?

在 MySQL 中,聚合函数可以在 SELECT 列表中使用,而无需附带GROUP BY 子句,与其他 RDBMS 产品(例如 SQL Server)不同。此行为是有意为之,为标准提供了独特的扩展。

例如,查询“SELECT col1,col2,sum(col3) FROM tbl1;”将成功执行,返回一行,其中包含 col1 和 col2 的第一行值以及所有 col3 值的总和。

说明

MySQL 允许此行为,因为它认为如果没有 GROUP BY 子句,所有行都会隐式分组在一起。因此,应用于整个表或多行的聚合函数对单个隐式组进行操作。

之前的行为

在 MySQL 版本 5.7.5 之前,此行为行为不受任何限制。但是,引入了新的服务器 SQL 模式 ONLY_FULL_GROUP_BY,以强制更严格地遵守 SQL 标准。启用后,此模式需要对所有聚合函数使用使用 GROUP BY 子句。

结论

MySQL 对不带 GROUP BY 子句的聚合函数的独特处理提供了数据灵活性检索。但是,了解此行为并考虑启用 ONLY_FULL_GROUP_BY 以确保符合 SQL 标准非常重要。

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

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