MySQL 错误: Expression #1 of ORDER BY clause is not in GROUP BY clause - 解决方法
这个错误是由于MySQL的sql_mode设置为'only_full_group_by',导致在GROUP BY子句中必须包含所有select列。但是你的查询中在GROUP BY子句中只包含了'category_name'列,而在ORDER BY子句中却使用了'category_id'列,这两个列不兼容。
要解决这个问题,可以有以下几种方法:
-
修改MySQL的配置,将sql_mode设置为非'only_full_group_by'模式。可以通过修改my.cnf文件或者使用以下命令来修改:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); -
修改查询语句,将ORDER BY子句中的非聚合列加入到GROUP BY子句中。你可以将查询语句修改为:
SELECT category_name name, count(0) value FROM product LEFT JOIN category ON category.category_id = product.product_category_id GROUP BY category_name, category_id ORDER BY category_id -
使用聚合函数来代替非聚合列的排序。你可以将查询语句修改为:
SELECT category_name name, count(0) value FROM product LEFT JOIN category ON category.category_id = product.product_category_id GROUP BY category_name ORDER BY count(0)
根据具体情况选择适合你的方法来解决这个问题。
原文地址: https://www.cveoy.top/t/topic/pblS 著作权归作者所有。请勿转载和采集!