MySQL 报错: Expression #1 of ORDER BY clause is not in GROUP BY clause - 解决方法
这个错误是由于 MySQL 的 sql_mode 设置为 only_full_group_by,而你的 SQL 语句中的 ORDER BY 子句中的 'category_id' 列不在 GROUP BY 子句中,并且也不是函数依赖于 GROUP BY 子句中的列。
解决这个问题有两种方法:
-
修改 MySQL 的配置文件,将 sql_mode 的值改为不包含 only_full_group_by,例如将其改为 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'。然后重启 MySQL 服务。
-
修改你的 SQL 语句,将 ORDER BY 子句中的 'category_id' 列改为 'category_name' 列,因为你已经在 GROUP BY 子句中使用了 'category_name' 列。修改后的 SQL 语句如下:
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 category_name
通过以上方法,你应该能够解决这个报错。
原文地址: https://www.cveoy.top/t/topic/pbmd 著作权归作者所有。请勿转载和采集!