简单
技术面试0 次浏览

简述 SQL 中 WHERE 和 HAVING 子句的区别。

后端工程师
SQLDatabase

答题要点

WHERE 和 HAVING 子句在 SQL 中都用于筛选数据,但应用场景有所不同。WHERE 子句用于在分组之前筛选行,它作用于表中的原始数据。例如,在查询学生信息时,若要筛选出年龄大于 20 岁的学生,就可以使用 WHERE 子句:SELECT * FROM students WHERE age > 20。WHERE 子句不能使用聚合函数,因为它在聚合操作之前执行。而 HAVING 子句用于在分组之后筛选分组结果,它作用于聚合函数的结果。比如,要找出平均成绩大于 80 分的班级,就需要使用 HAVING 子句:SELECT class, AVG(score) FROM students GROUP BY class HAVING AVG(score) > 80。HAVING 子句可以使用聚合函数,因为它在分组和聚合操作之后执行。总结来说,WHERE 用于筛选原始数据行,HAVING 用于筛选分组后的结果。