SELECT list is not in GROUP BY clause and contains nonaggregated column
时间: 2023-07-18 14:19:27 浏览: 157
解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
这个错误是由于 MySQL 的语法限制引起的。在使用 `GROUP BY` 语句进行分组查询时,查询结果中的列必须要么是分组列,要么是聚合函数的结果。
例如,下面的 SQL 语句是合法的:
```
SELECT account_id, COUNT(*) AS total
FROM users
GROUP BY account_id
```
上述语句按照 `account_id` 分组,并统计每个分组内的记录数量,因此 `account_id` 是分组列,`COUNT(*)` 是聚合函数的结果。
但是,下面的 SQL 语句就是不合法的:
```
SELECT account_id, name
FROM users
GROUP BY account_id
```
上述语句按照 `account_id` 分组,但是查询结果中包含了非分组列 `name`,这就会导致 MySQL 报错。
解决这个问题的方法是,要么将查询结果中的非分组列也进行聚合操作,要么将非分组列从查询结果中删除。例如:
```
SELECT account_id, MAX(name) AS name
FROM users
GROUP BY account_id
```
上述语句将 `name` 列进行了聚合操作,使用了 `MAX` 函数来获取每个分组内的最大值。又或者,如果不需要 `name` 列的数据,可以直接从查询结果中删除:
```
SELECT account_id
FROM users
GROUP BY account_id
```
上述语句只查询了分组列 `account_id`,不包含非分组列,因此是合法的。
阅读全文