Mysql 关闭ONLY_FULL_GROUP_BY

bug原因:

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。简而言之,就是SELECT后面接的列必须被GROUP BY后面接的列所包含。
如:
select a,b from table group by a,b,c; (正确)
select a,b,c from table group by a,b; (错误)
这个配置会使得GROUP BY语句环境变得十分狭窄,所以一般都不加这个配置。
查看mysql是否开启了ONLY_FULL_GROUP_BY
select @@global.sql_mode
如果返回值包含 ONLY_FULL_GROUP_BY,那么说明mysql开启了ONLY_FULL_GROUP_BY。

解决方法:

去掉 返回值中的ONLY_FULL_GROUP_BY,将剩下的返回值拷贝出来,打开mysql的ini配置文件,将拷贝下来的配置追加到[mysqld]后面
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’
注意要用单引号括起来。
然后重启mysql服务
特别说明:mysql停止/重启命令

win下
net stop mysql
net start mysql

你可能感兴趣的:(服务器,mysql)