问题描述:
在 MySQL 5.7 以上的版本中 sql_mode 新加入了 only_full_group_by,导致我们在使用 group by 函数的时候,则会报错
举例说明:
SELECT * FROM sys_user_info GROUP BY sex
解决方法:
方法一:
修改 sql 语句为:
SELECT any_value ( id ) AS id, any_value ( `name` ) AS `name`, sex FROM sys_user_info GROUP BY sex
对于在 GROUP BY 语句中的字段,可以不用加 any_value,否则需要加上 any_value,但是这种方法对于我们已经开发好的项目,需要大量地去修改 sql 语句,所以很麻烦
方法二:
找到 /etc/my.cnf 文件,加入内容:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
修改后如下:
重启MySQL:
systemctl restart mysqld.service