首页/数据/SQL 速查/HAVING 过滤分组结果
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

HAVING 过滤分组结果

HAVING 在分组与聚合之后过滤:条件里可以用聚合函数,HAVING COUNT(*) > 5 是典型用法。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT city, COUNT(*) AS user_cnt
FROM users
GROUP BY city
HAVING COUNT(*) > 5
ORDER BY user_cnt DESC;
时机GROUP BY 之后
内容可包含聚合表达式
对比WHERE 在分组前过滤行

易错点

  • 能写在 WHERE 的行级条件不要放到 HAVING:先过滤再分组通常更省资源
  • HAVING 里用别名是 MySQL 扩展,PostgreSQL 中会报列不存在

数据来源与参考

  • MySQL 8.0 Reference Manual · HAVING
  • PostgreSQL Documentation · HAVING
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌