这个错误是由于MySQL的sql_mode设置为'only_full_group_by',导致在GROUP BY子句中必须包含所有select列。但是你的查询中在GROUP BY子句中只包含了'category_name'列,而在ORDER BY子句中却使用了'category_id'列,这两个列不兼容。

要解决这个问题,可以有以下几种方法:

  1. 修改MySQL的配置,将sql_mode设置为非'only_full_group_by'模式。可以通过修改my.cnf文件或者使用以下命令来修改:

    SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    
  2. 修改查询语句,将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
    
  3. 使用聚合函数来代替非聚合列的排序。你可以将查询语句修改为:

    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)
    

根据具体情况选择适合你的方法来解决这个问题。

MySQL 错误: Expression #1 of ORDER BY clause is not in GROUP BY clause - 解决方法

原文地址: https://www.cveoy.top/t/topic/pblS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录