原因:only_full_group_by在默认情况下是不启用的
解决方案:
1.执行以下个命令,可以查看 sql_mode 的内容。
1、mysql> SHOW SESSION VARIABLES;
2、mysql> SHOW GLOBAL VARIABLES;
3、mysql> select @@sql_mode;
可见session和global 的sql_mode的值都为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2.执行以下两个命令:
1、mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
2、mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
这两个命令,是去掉 sql_mode 的 ONLY_FULL_GROUP_BY,这样就可以解决MySQL5.7数据库GROUP BY报错的问题了
原文链接:https://blog.csdn.net/MICHAELKING1/article/details/89741936