数据库5.7之上,都会默认开启only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错。
原因分析:对于group by聚合操作,如果在select中的列没有在group by中出现,那么这个SQL是不合法的,因为列不在group by从句中,所以设置了sql_mode=only_full_group_by的数据库,在使用group by时就会报错,
解决方式:在服务器数据库中的/etc/mysql/mysql.conf.d目录下,(这个是我自己的目录)
vim mysqld.cnf
在这个文件的最后一行添加如下代码:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然后重新启动数据库即可。