为什么我的没有 GROUP BY 的聚合查询会在 MySQL 5.7.14 中导致错误?

Barbara Streisand
发布: 2024-11-01 03:39:02
原创
922 人浏览过

Why Do My Aggregate Queries Without GROUP BY Cause Errors in MySQL 5.7.14 ?

不使用 GROUP BY 的聚合查询:了解错误和解决方案

以前,在旧版本的 MySQL 上,不使用 GROUP BY 子句的聚合查询函数(例如 COUNT())通常可以毫无问题地运行。但是,在 MySQL 5.7.14 及更高版本中,此类查询可能会遇到错误:

SQLSTATE[42000]: Syntax error or access violation: 1140 In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column [...]
登录后复制

此错误源于 MySQL 的默认行为的更改,以与其他 RDBMS 系统保持一致,这需要非聚合字段使用聚合函数时要包含在 GROUP BY 子句中的 SELECT 子句中。

解决错误:

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

1。调整 MySQL 设置:

您可以通过修改 MySQL 的设置来恢复到旧版行为。但是,通常不建议这样做,因为它会延续非最佳查询实践。

2.修复查询:

首选解决方案是修改查询以在 GROUP BY 子句中包含非聚合列。例如,上面的查询可以重写为:

SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1
登录后复制

Exception in 5.7.5 :

在 MySQL 5.7.5 版本及更高版本中,它仍然是当非聚合列被限制为单个值时(例如,在 WHERE 子句中使用过滤器),允许从 GROUP BY 子句中排除非聚合列。可以在此处找到此异常的详细信息和示例。

以上是为什么我的没有 GROUP BY 的聚合查询会在 MySQL 5.7.14 中导致错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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