Mysql里面select、from、where、group by、having、order by的执行顺序

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;

你可能感兴趣的:(mysql)