(1055, "Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'sheji.sale.portion' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by")
时间: 2023-07-18 13:21:57 浏览: 40
这个错误是因为 MySQL 的版本在 5.7.5 及以上,启用了 SQL_MODE 中的 `ONLY_FULL_GROUP_BY` 模式,要求在 GROUP BY 子句中的列必须是聚合函数或者 GROUP BY 列。
解决这个错误的方法有两种:
1. 修改 SQL_MODE,去掉 `ONLY_FULL_GROUP_BY` 模式,可以在 MySQL 的配置文件中或者会话中执行如下命令:
```
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
2. 在查询中添加聚合函数,例如:
```
SELECT column1, SUM(column2)
FROM your_table
GROUP BY column1;
```
这个查询会将 `column1` 列进行分组,并对每个分组中的 `column2` 列求和。如果你不需要对 `column2` 求和,可以将 `SUM(column2)` 改为其他的聚合函数,例如 `MAX(column2)` 或者 `MIN(column2)` 等。
相关问题
MySQL解决报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column. macbook怎么解决这个报错
在MySQL中,当使用GROUP BY子句对结果进行分组时,SELECT列表中的列必须要么是分组的列,要么是聚合函数的结果。否则,会出现报错"Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column"。解决这个报错的方法有两种:
1. 使用聚合函数对非分组列进行聚合操作。
2. 修改MySQL的sql_mode参数,将其设置为非严格模式。
下面是两种解决方法的示例:
方法一:使用聚合函数对非分组列进行聚合操作
```sql
SELECT custname, MAX(salary) FROM your_table GROUP BY custname;
```
方法二:修改MySQL的sql_mode参数
```sql
SET sql_mode = 'ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER';
```
请注意,修改sql_mode参数可能会影响其他查询的行为,因此在修改之前请确保了解其影响。
1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column
这个错误是由于在SQL查询中,SELECT语句中的第二个表达式不在GROUP BY子句中,并且包含了非聚合列。这个错误通常发生在使用GROUP BY子句进行分组查询时。
解决这个问题的方法有两种:
1. 将非聚合列添加到GROUP BY子句中:根据错误提示,将SELECT语句中的第二个表达式添加到GROUP BY子句中,以确保所有非聚合列都被正确分组。
2. 使用聚合函数对非聚合列进行处理:如果你不需要对非聚合列进行分组,可以使用聚合函数对其进行处理。例如,使用SUM、COUNT、MAX等聚合函数对非聚合列进行计算。