原因
出现此问题的原因是 MySQL 5.7.5 之后默认开启了 ONLY_FULL_GROUP_BY
sql_mode。对此官方的解释:MySQL 实现了 函数依赖性 的检测。如果启用了 ONLY_FULL_GROUP_BY
SQL模式(默认情况下是这样),MySQL 将拒绝 select list、HAVING condition 或 ORDER BY list 引用的未聚合列,这些列既不在 GROUP BY 子句中命名,也不在功能上依赖于它们。
解决方法
当然,最好的解决方法当然是修改优化 sql 语句,使得满足这个函数依赖性。如果代码太多或者你根本就不想这么做,解决方法无非就是不启用 ONLY_FULL_GROUP_BY
SQL模式。
首先,查询目前启用的sql_mode:select @@global.sql_mode;