为什么我的 MySQL 5.7 聚合查询在没有 GROUP BY 子句的情况下会失败?

DDD
发布: 2024-10-26 01:42:28
原创
907 人浏览过

Why is my MySQL 5.7  query with aggregation failing without a GROUP BY clause?

MySQL 5.7 中聚合查询需要 GROUP BY

问:升级到 MySQL 5.7.14 后,执行查询时遇到错误没有 GROUP BY 子句。该查询涉及聚合 (COUNT) 和 SELECT 列表中的非聚合列,以前在较旧的计算机上运行。

答:在 MySQL 版本 5.7.5 及更高版本中,默认行为已更改聚合数据时强制使用 GROUP BY。这意味着,当在 SELECT 子句中使用 COUNT 等函数时,所有非聚合列必须包含在 GROUP BY 子句中。

要解决该错误,您有两个选项:

  • 修改 MySQL 设置:调整 MySQL 配置以恢复到以前的行为,即允许在不使用 GROUP BY 的聚合查询中使用非聚合列。
  • 修复查询: 更新查询以包含 GROUP BY 子句中的所有非聚合列,如下例所示:
<code class="sql">SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1</code>
登录后复制

需要注意的是,MySQL 5.7.5 及更高版本中存在异常当使用 WHERE 子句中的过滤器将非聚合列限制为单个值时。在这种情况下,可以从 GROUP BY 子句中排除非聚合列。更多详情请参考官方文档。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!