问题:我是用mysql8.0后,是用分组查询sql_mode = only_full_group_by
出现问题的原因
mysql 5.7版本以后的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准",所以导致group by无法正常执行。
解决办法
第一种方式
使用navicat连接mysql,输入show variables like ‘%sql_mode’;
可以看到如下信息
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
把除去ONLY_FULL_GROUP_BY以后剩下的复制,如下:
TRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
然后输入sql-mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
在输入show variables like ‘%sql_mode’;
可以看到信息中已经没有ONLY_FULL_GROUP_BY了。
这是已经暂时解决了这个问题,但是这种方式在mysql重启之后会失效!
第二种方式
打开my.ini 在[mysqld]下面添加sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’
然后重启mysql,这样就是永久性想解决该问题