this is incompatible with sql_mode=only_full_group_by 如何解决
时间: 2023-10-14 22:28:04 浏览: 85
该错误是由于 MySQL 5.7 或更新版本默认启用了 `ONLY_FULL_GROUP_BY` SQL mode 导致的。此模式要求在 GROUP BY 子句中的每个列都出现在 SELECT 子句中或在聚合函数中使用。
要解决该问题,有以下几种方法:
1. 修改 SQL 查询,确保 GROUP BY 子句中的所有列都在 SELECT 子句中出现或在聚合函数中使用。
2. 修改 MySQL 配置,禁用 `ONLY_FULL_GROUP_BY` SQL mode。在 MySQL 配置文件中添加以下行:
```
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
```
以上配置禁用了 `ONLY_FULL_GROUP_BY` SQL mode。你可以根据自己的需求修改该行的配置。
3. 在执行查询前,临时禁用 `ONLY_FULL_GROUP_BY` SQL mode。可以使用以下查询:
```
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
该查询会将当前会话的 SQL mode 修改为不包含 `ONLY_FULL_GROUP_BY`。执行完查询后,会话的 SQL mode 会恢复为原来的设置。
注意,以上方法可能会影响到查询的正确性和安全性,请根据具体情况选择适合自己的方法。
阅读全文