一、MySQL5.7 Group By 报错原因

MySQL5.7 引入了一个新的 SQL 模式,叫做 only_full_group_by,此模式下,如果使用 Group By 语句,则在 select 列表中只能出现 Group By 子句中出现过的列。否则,就会报错。

二、Group By 报错的解决方法

1、如果想要使用 Group By 语句,但又不想报错,则可以在 Group By 子句中把所有的列都添加进去。

SELECT col1, col2, col3 FROM table1 GROUP BY col1, col2, col3;
SQL

2、如果想要在 select 列表中出现一些不在 Group By 子句中的列,可以使用 MySQL 的聚合函数,如 SUM()、COUNT() 等,来代替这些列。

SELECT col1, col2, SUM(col3) FROM table1 GROUP BY col1, col2;
SQL

三、如何关闭 only_full_group_by 模式

如果想要关闭 only_full_group_by 模式,可以在 MySQL 的配置文件中添加如下语句:

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

然后重启 MySQL 服务,即可关闭 only_full_group_by 模式。