1、执行from和where得到第一个结果集
2、对第一个结果集执行group by分组操作,得到第二个结果集
3、对第二个结果集进行select操作,得到第三个结果集
4、对第三个结果集进行having操作,得到第四个结果集
5、对第四个结果集进行order by操作,得到最终结果
having和where的区别:
(1):having必须在执行了group by操作之后才能运行
(2):where的执行顺序在group by之前,也就必然在having之前。
(3):having后面可以加上聚合函数,而where后面不能加聚和函数如count(),sum(),avg(),max(),min()等函数。
举例:按由高到低的顺序显示个人平均分在70分以上的学生姓名和平均分,为了尽可能地提高平均分,在计算平均分前不包括分数在60分以下的成绩
select name,ave(score) from scoretable where score >= 60 group by name having ave(score) > 70 order by ave(score) desc;