我是靠谱客的博主 名字长了才好记,这篇文章主要介绍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 模式

步骤

  1. 查看当前 SQL 模式
  2. 移除 ONLY_FULL_GROUP_BY
  3. 重启 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错误:内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(189)

评论列表共有 0 条评论

立即
投稿
返回
顶部