对比
对比
-- 先过滤行:只统计北京用户
SELECT city, COUNT(*) AS cnt
FROM users
WHERE city = 'Beijing'
GROUP BY city;
-- 组后过滤:统计所有城市,只显示人数大于 5 的
SELECT city, COUNT(*) AS cnt
FROM users
GROUP BY city
HAVING COUNT(*) > 5;| WHERE | 行级过滤,先执行;不能用聚合函数 |
|---|---|
| HAVING | 组级过滤,后执行;可用聚合函数 |
| 性能 | 能把条件下推到 WHERE 就下推 |