where筛选作用于group by 前 having 筛选作用于 group by 之后
看个例子:
select student_id,sum(student_grade) from student_table group by student_id having sum(student_grade) >500
查询总分大于500分的学生的id和学科总分
这里用where不能筛选总分大于500的学生,他作用在group by 分组之前,此时sum(student_grade)数据库中根本不存在
所以having筛选,因为它作用在 group by 分组之后已经生成了sum(student_grade)
查询学科总分大于500分以及id大于12012的学生的id和总分可以用到where
select student_id,sum(student_grade) from student_table where student_id>12012 group by student_id having sum(student_grade) >500
这样分组前where先筛选id>12012的学生,在进行分组,分组后having筛选掉学科总分大于500的学生