sql的having和where

where: 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数(例如SUM, COUNT, MAX, AVG等) having:是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,一定要和group by连用,在Having中可以使用聚合函数 例:查询总分大于250分的学生 如果不是用having使用where:

SELECT * FROM (SELECT g.student_name,SUM(g.score) sumscore FROM grade g GROUP BY g.student_name) t WHERE t.sumscore > 250

如果使用having

SELECT g.student_name,SUM(g.score) FROM grade g GROUP BY g.student_name HAVING SUM(g.score) > 250;