Expression #2 of SELECT list is not in GROUP BY clause and containsnonaggregated column 'information_schema.USER_PRIVILEGES.TABLE_CATALOG' which is notfunctionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group
时间: 2023-07-23 18:38:23 浏览: 144
这个错误通常是因为SQL_MODE被设置为ONLY_FULL_GROUP_BY,而查询中SELECT子句中的某些列未在GROUP BY子句中出现,或者SELECT子句中的某些列不是聚合函数。这个错误可以通过以下方式解决:
1. 将SELECT子句中的所有列都包含在GROUP BY子句中。例如:
```
SELECT user, MAX(id) FROM mytable GROUP BY user;
```
在这个例子中,MAX(id)是一个聚合函数,而user列包含在GROUP BY子句中。
2. 将所有不是聚合函数的列从SELECT子句中删除。例如:
```
SELECT MAX(id) FROM mytable GROUP BY user;
```
在这个例子中,user列不是聚合函数,因此从SELECT子句中删除。
3. 如果你想在SELECT子句中包含不是聚合函数的列,并且不想在GROUP BY子句中包含它们,可以使用ANY_VALUE()函数。例如:
```
SELECT user, ANY_VALUE(id) FROM mytable GROUP BY user;
```
在这个例子中,ANY_VALUE(id)函数将id列包装在一个聚合函数中,以便在不影响GROUP BY子句的情况下在SELECT子句中使用它。
4. 如果你不想使用ONLY_FULL_GROUP_BY模式,可以将SQL_MODE设置为一个较宽松的值,例如:
```
SET 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_MODE设置为默认值,但不包含ONLY_FULL_GROUP_BY模式。
以上是几种解决方法,建议根据实际情况选择。
阅读全文