mysql5.7.34使用group by不规范,导致SELECT list is not in GROUP BY clause and contains nonaggregated column
时间: 2023-11-10 08:04:34 浏览: 41
这个问题是因为 MySQL 5.7.5 之后的版本默认启用了 ONLY_FULL_GROUP_BY 模式,要求 GROUP BY 子句中的列必须出现在 SELECT 列表中或者使用聚合函数进行处理。如果不想启用 ONLY_FULL_GROUP_BY 模式,可以在配置文件中设置 sql_mode 参数。
可以通过以下两种方式解决这个问题:
1. 在 SELECT 列表中添加需要 GROUP BY 的列或者使用聚合函数进行处理。
2. 修改 MySQL 配置文件,将 sql_mode 参数中的 ONLY_FULL_GROUP_BY 移除。
相关问题
mysql 8.0下的SELECT list is not in GROUP BY clause and contains nonaggregated column
这个错误是因为 MySQL 5.7 和之前版本中 SELECT 中可以包含未在 GROUP BY 子句中的非聚合列,但在 MySQL 8.0 中,为了更严格地执行 SQL 标准,不再允许这种情况出现。
如果要解决这个问题,可以在 SELECT 子句中包含的所有非聚合列都添加到 GROUP BY 子句中,或者将非聚合列转换为聚合列(例如使用 MAX()、MIN()、SUM() 等函数)。
例如,如果你有以下查询语句:
```
SELECT department, name, MAX(salary)
FROM employee
GROUP BY department;
```
在 MySQL 8.0 中,你需要将它修改为:
```
SELECT department, name, MAX(salary)
FROM employee
GROUP BY department, name;
```
或者:
```
SELECT department, MAX(name), MAX(salary)
FROM employee
GROUP BY department;
```
Mysql:1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated
引用:1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'senior_two.score.student_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 。 引用:这个错误是由于 MySQL 的新版本中默认开启了ONLY_FULL_GROUP_BY模式,即在 GROUP BY 语句中的 SELECT 列表中,只能包含分组或聚合函数,不能包含其他列。而你的查询语句中出现了一个列senior_two.score.student_id,它既没有被分组也没有被聚合,因此 MySQL 报出了这个错误。 。 引用:如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测...。
根据引用,这个错误意味着在SELECT语句中的第二个表达式不在GROUP BY子句中,并且包含了一个非聚合的列'senior_two.score.student_id'。这与sql_mode=only_full_group_by模式不兼容。
根据引用,这个错误是由于MySQL的新版本中默认开启了ONLY_FULL_GROUP_BY模式。在GROUP BY语句的SELECT列表中,只能包含分组或聚合函数,不能包含其他列。而你的查询语句中出现了一个列'senior_two.score.student_id',它既没有被分组也没有被聚合,因此MySQL报出了这个错误。
如果你启用了only_full_group_by SQL模式(默认情况下是启用的),那么MySQL会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘se](https://blog.csdn.net/m0_61615803/article/details/130076452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains ...](https://download.csdn.net/download/weixin_38743076/13698627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]