解决MySQL8.x报错1055 - Expression #1 of ORDER BY clause is not in GROUP BY问题

2024-07-16   阅读:247   类型:后端   分类:Mysql    标签: Mysql

MySQL8.x查询报错1055 - Expression #1 of ORDER BY clause is not in GROUP BY问题,如下

Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'a8table.a.modify_date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

这个错误是由于 MySQL 的 only_full_group_by 模式导致的,它要求在使用 GROUP BY 时,ORDER BY 子句中的字段必须要么在 GROUP BY 子句中出现,要么是聚合函数的参数。

在你的查询中,ORDER BY year(a.modify_date), month(a.modify_date) desc 引起了这个错误,因为 year(a.modify_date) 和 month(a.modify_date) 不是在 GROUP BY 子句中,也没有使用聚合函数。

为了解决这个问题,你可以按照以下方法之一操作:

1、修改 sql_mode 设置:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

或者

SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

2、彻底修改

打开mysql配置文件。在[mysqld]下加入如下配置,重启数据库

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://tpxhm.com/adetail/1102.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×