不使用 GROUP BY 的 MySQL 聚合函数:为什么以及如何
在 MySQL 中,可以在 SELECT 列表中使用聚合函数而不指定 GROUP BY子句,与 SQL Server 等其他 RDBMS 不同。这种看似意外的行为实际上是一种有意的设计选择。
当不使用 GROUP BY 的聚合函数时,MySQL 会将整个结果集视为一个组。这意味着聚合函数为查询中指定的整个表或子集返回单个值。
例如,查询 SELECT col1,col2,sum(col3) FROM tbl1;返回包含 col1 和 col2 的第一个值以及 col3 中所有值的总和的单行。在需要计算汇总统计信息而不对数据进行分组的情况下,此行为非常有用。
可以使用 ONLY_FULL_GROUP_BY 服务器 SQL 模式修改不带 GROUP BY 的聚合函数的行为。 MySQL 5.7.5之前的版本默认禁用该模式。但是,可以启用它以禁止不使用 GROUP BY 的聚合函数。
要启用 ONLY_FULL_GROUP_BY,请将以下行添加到 MySQL 配置文件(通常是 my.cnf):
sql-mode=ONLY_FULL_GROUP_BY
一次启用后,MySQL 将对使用不带 GROUP BY 的聚合函数的查询抛出错误。这有助于确保数据完整性并防止错误结果。
以上是MySQL 中如何使用没有 GROUP BY 的聚合函数?的详细内容。更多信息请关注PHP中文网其他相关文章!