首页  >  文章  >  数据库  >  为什么在没有 GROUP BY 子句的情况下无法聚合 MySQL 中的查询?

为什么在没有 GROUP BY 子句的情况下无法聚合 MySQL 中的查询?

Susan Sarandon
Susan Sarandon原创
2024-10-26 02:35:02885浏览

Why Can't I Aggregate Queries in MySQL Without a GROUP BY Clause?

在 MySQL 中聚合查询而不使用 GROUP BY

在未指定 GROUP BY 子句的情况下聚合数据时,您的查询遇到语法错误。此行为是在 MySQL 5.7.5 中引入的,作为确保数据聚合完整性的一部分。

错误消息说明非聚合列(例如查询中的 id)不能出现在 SELECT 中当使用聚合函数(例如 COUNT())而不使用 GROUP BY 子句时的列表。这可确保聚合结果准确且一致。

解决错误

您有两个选项来解决此错误:

  1. 更改 MySQL 设置:您可以修改 MySQL 配置以恢复到以前的行为,其中 SELECT 列表中允许使用非聚合列,而无需使用 GROUP BY 子句。但是,不建议这样做,因为它违反了数据聚合的最佳实践。
  2. 修改您的查询:首选解决方案是修改您的查询以包含 GROUP BY 子句,该子句将结果分组为非聚合列。在您的情况下,您可以使用以下更新的查询:
SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1

或者,如果您可以确保非聚合列(例如 id)仅限于 WHERE 中的单个值子句,您可以将其从 GROUP BY 子句中排除。请参阅提供的链接以获取此异常的示例。

通过使用其中一种方法,您可以解决错误并确保 MySQL 查询中的数据正确聚合。

以上是为什么在没有 GROUP BY 子句的情况下无法聚合 MySQL 中的查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

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