MySQL执行分组统计查询报ERROR 1111 (HY000)错误如何解决
报错原因
报错ERROR 1111 (HY000): Invalid use of group function是SQL执行顺序限制导致的:WHERE子句会在GROUP BY分组操作之前执行,而count()这类聚合函数的结果是分组完成后才会计算,所以不能把聚合函数的判断条件放在WHERE中。
修正后的SQL语句
SELECT GolDarah, count(GolDarah) AS JmlPasien FROM tblPasien WHERE monthname(TglLahir) IN ('July','August','September','October','November','December') GROUP BY GolDarah HAVING JmlPasien = 2 ORDER BY GolDarah;
核心修改点
- 把聚合结果的判断条件从
WHERE子句移到HAVING子句中,HAVING是SQL专门用于分组后过滤聚合计算结果的语法 - 可选优化:给别名增加了
AS关键字,提升语句可读性,也能避免部分数据库的别名识别异常
内容的提问来源于stack exchange,提问作者Triminor
相关产品推荐
相关产品推荐

