mysql8 groupby报错
时间: 2023-10-19 12:35:41 浏览: 181
Mysql升级到5.7后遇到的group by查询问题解决
在MySQL 8中,当使用GROUP BY语句时,如果SELECT列表中的列没有在GROUP BY子句中出现或者没有使用聚合函数进行计算,就会报错。这是由于MySQL 8中默认启用了严格模式(sql_mode=only_full_group_by),要求SELECT列表中的列必须要么在GROUP BY子句中出现,要么使用聚合函数进行计算。所以如果你的代码中出现了类似于"Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column"的报错,那是因为你的SELECT列表中的某个列未在GROUP BY子句中出现,也没有使用聚合函数进行计算,与严格模式不兼容。
举个例子来解释,假设有一个名为student的表,其中包含sno(学号)和sname(学生姓名)两个列,如果你执行以下SQL语句:
SELECT sno, sname FROM student GROUP BY sno;
在MySQL 8中,将会报错,因为sname列没有在GROUP BY子句中出现,也没有使用聚合函数进行计算。
为了解决这个问题,你可以将所有未在GROUP BY子句中出现的列都添加到GROUP BY子句中,或者使用聚合函数进行计算。比如,你可以执行以下SQL语句来避免报错:
SELECT sno, MAX(sname) FROM student GROUP BY sno;
这样就能够正确地使用GROUP BY语句进行查询了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [MySQL8.x group_by报错的4种解决方法](https://blog.csdn.net/hefeng_aspnet/article/details/129078794)[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_2"}}] [.reference_item style="max-width: 50%"]
- *3* [mysql8中的groupby报错](https://blog.csdn.net/appleyuchi/article/details/106305043)[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_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文