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'
文章评论(0)