这与 sql_mode=only_full_group_by 不兼容。如何处理
时间: 2023-09-21 21:03:03 浏览: 73
mysql8.0.20下载安装及遇到的问题(图文详解)
SQL_MODE=ONLY_FULL_GROUP_BY 是 MySQL 5.7.5 及更高版本中的默认 SQL 模式之一,用于强制执行 GROUP BY 语句的严格语义。如果在 SQL 查询中使用 GROUP BY 子句并且 SELECT 列表中出现了非聚合列,则会出现“此列不在 GROUP BY 子句中”的错误。
要解决此问题,有以下两种方法:
1. 在查询中包括所有 SELECT 列在 GROUP BY 子句中。这个方法可以确保查询结果的正确性,但可能会使查询的语法变得冗长。
2. 将 SQL_MODE 设置为兼容模式,使其不再强制执行 ONLY_FULL_GROUP_BY。可以使用以下命令将 SQL_MODE 设置为兼容模式:
```
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
```
或者在 MySQL 配置文件中添加以下行:
```
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
```
请注意,将 SQL_MODE 设置为兼容模式可能会导致某些查询结果不正确。因此,建议在更改 SQL_MODE 之前对查询进行仔细检查。
阅读全文