MySQL WHERE 和 HAVING 的区别?
WHERE:在分组(GROUP BY)之前对原始行过滤,不能使用聚合函数(COUNT/SUM 等)与聚合别名;HAVING:在分组之后对聚合结果过滤,可以使用聚合函数。执行顺序:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT。优化:能在 WHERE 过滤的不要放 HAVING(提前缩小数据量);HAVING 常用于筛选聚合结果(HAVING COUNT(*) > 5、HAVING SUM(amount) > 1000);注意 HAVING 也能过滤普通列但效率低。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。