大于5.7版本mysql的分组报错expression #1 of select list is not in group by cl
时间: 2023-05-09 13:02:43 浏览: 99
MySQL 5.7版本在分组查询时会要求SELECT语句中的非聚合列(即没有用聚合函数包裹的列)必须都在GROUP BY子句中出现。如果非聚合列没有在GROUP BY子句中出现,就会报错,错误提示为“Expression #N of SELECT list is not in GROUP BY clause and contains nonaggregated column”。
这是因为MySQL 5.7版本开始,对分组查询做了改进,要求SELECT语句中非聚合列必须都在GROUP BY子句中出现,以保证分组后的结果是一致的。这种改进提高了查询结果的正确性和安全性,但也增加了查询的复杂度。
解决这个问题的方法有两种:
1.将SELECT语句中的非聚合列都添加到GROUP BY子句中。这样做可以避免报错,但可能会导致查询结果不准确或过于复杂。
2.使用聚合函数包裹非聚合列,将其转换为聚合列。这样做可以保证查询结果的正确性,但也可能会导致查询结果不易于理解。
总之,要正确使用MySQL 5.7及以上版本的分组查询,需要注意SELECT语句中非聚合列的处理方式,并根据具体情况选择适当的解决方法。
阅读全文