

新闻资讯
技术学院HAVING必须配合GROUP BY使用,用于分组后基于聚合函数结果筛选;WHERE在分组前过滤行,不能用聚合函数。
HAVING 用于对分组后的结果进行筛选,必须配合 GROUP BY 使用,不能单独出现。它和 WHERE 的核心区别在于:WHERE 在分组前过滤行,HAVING 在分组后过滤组。
当你需要基于聚合函数(如 COUNT()、SUM()、AVG()、MAX()、MIN())的结果做条件判断时,只能用 HAVING。
标准顺序是:SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT。HAVING 必须出现在 GROUP BY 之后、ORDER BY 之前。
SELECT category, AVG(price) FROM products GROUP BY category HAVING AVG(price) > 100;
报错HAVING AVG(price) > 100,而非 HAVING avg_price > 100
常见场景是:先用 WHERE 排除无效原始数据,再分组,最后用 HAVING 筛选满足聚合条件的组。
SELECT city, AVG(order_amount) FROM orders WHERE order_date >= '2025-01-01' GROUP BY city HAVING AVG(order_amount) > 500;