我是靠谱客的博主 名字长了才好记,这篇文章主要介绍mysql错误: ORDER BY clause is not in GROUP BY clause and contains nonaggregated column,现在分享给大家,希望可以做个参考。
原因:
MySQL ONLY_FULL_GROUP_BY 模式
在GROUP BY
查询时,所有非聚合列必须在GROUP BY
语句中。- 你的
ORDER BY s.prov_code ASC
未出现在 GROUP BY 语句里
,导致 MySQL 抛出错误。
✅ 解决方案
方法 1(推荐): 在 GROUP BY 中添加 s.prov_code
修改 GROUP BY 语句
,把 s.prov_code
加进去:
GROUP BY s.prov_code, region_name, s.server_month, s.activity_plan_count, s.person_plan_count
ORDER BY s.prov_code ASC, s.server_month DESC
修改后的 SQL 代码:
...
) s GROUP BY
s.prov_code, <!-- ✅ 添加这个字段 -->
region_name,
s.server_month,
s.activity_plan_count,
s.person_plan_count
ORDER BY s.prov_code ASC, s.server_month DESC
💡 这样 MySQL 就不会报错了!
方法 2: 关闭 ONLY_FULL_GROUP_BY
如果你不想改 SQL,可以 关闭 MySQL 的 ONLY_FULL_GROUP_BY 模式
:
步骤
- 查看当前 SQL 模式
移除 ONLY_FULL_GROUP_BY
- 重启 MySQL 服务器
⚠️ 注意
生产环境不建议关闭 ONLY_FULL_GROUP_BY
,因为它是防止错误聚合查询的重要机制。- 关闭后,可能会导致某些错误的数据返回。
最佳方案
🚀 方法 1(添加 s.prov_code 到 GROUP BY)
是最安全、推荐的解决方案。这样可以保证查询结果正确,同时不会影响数据库的 SQL 规范。
希望这能帮到你!😊
最后
以上就是名字长了才好记最近收集整理的关于mysql错误: ORDER BY clause is not in GROUP BY clause and contains nonaggregated column的全部内容,更多相关mysql错误:内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复