| 用途 | 分组结果过滤 |
|---|---|
| 位置 | GROUP BY 之后、ORDER BY 之前 |
| 对比 | WHERE 过滤行,HAVING 过滤组 |
用法示例
用法示例
SELECT user_id, COUNT(*) AS cnt, SUM(amount) AS total
FROM orders
WHERE created_at >= '2026-09-01' -- 先筛行
GROUP BY user_id
HAVING cnt >= 5 AND total > 1000 -- 再筛组
ORDER BY total DESC
LIMIT 20;HAVING 里可以引用 SELECT 别名(MySQL 支持);标准 SQL 更严格,跨库脚本建议写聚合表达式本身。