sql group by报错
时间: 2023-09-25 08:10:35 浏览: 90
sql错误
当使用GROUP BY语句进行分组查询时,如果SELECT语句中的列没有出现在GROUP BY子句中,也没有依赖于GROUP BY列的函数列,就会报错。这个错误通常是由于使用了MySQL的默认设置,即ONLY_FULL_GROUP_BY模式导致的。该模式要求SELECT语句中的每个非聚合列必须要么出现在GROUP BY子句中,要么是依赖于GROUP BY列的函数列。
例如,在以下查询中,如果name列没有出现在GROUP BY子句中,也没有依赖于GROUP BY列的函数列,就会报错:
SELECT work_year, GROUP_CONCAT(name) FROM r_resume GROUP BY work_year
另外,如果在HAVING条件或ORDER BY语句中的列也没有出现在GROUP BY子句中,也没有依赖于GROUP BY列的函数列,同样会导致报错。
为了解决这个问题,你可以修改查询语句,确保SELECT语句中的每个非聚合列要么出现在GROUP BY子句中,要么是依赖于GROUP BY列的函数列。你也可以修改MySQL的配置,将ONLY_FULL_GROUP_BY模式关闭,这样就可以避免该错误的发生。
例如,你可以使用以下查询来避免GROUP BY报错:
SELECT work_year, GROUP_CONCAT(name) FROM r_resume GROUP BY work_year
或者
SELECT work_year, COUNT(1) FROM r_resume GROUP BY work_year [3]<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [sql使用group by报错的解决方法](https://blog.csdn.net/BHSZZY/article/details/114842082)[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: 100%"]
[ .reference_list ]
阅读全文