Mysql from where group by having select order by limit 执行顺序

第一步: from  取全表数据 -->结果集1

第二步: where 对全表数据进行过滤  --> 结果集2

第三步: group by 对过滤后的结果集进行分组 -->结果集3

第四步: having  对分组结果进行筛选.    使用having的前提是使用了group by -->结果集4

第五步: select  对结果集4的每1组数据执行select x x , 有几组就执行几次 , 此时字段别名生效. --> 结果集5

第六步: order by 对结果集5进行排序  -->结果集6

第七步: limit 从结果集6中取指定的数据.

图1 : 

 

 

注意  :

  1. 这里不能使用 having total > 10000 , 因为 total 是 最后一步select 从结果集取sum(salary)的时候 给起的别名.

        2. 这里能使用 order by total asc , 是因为 order by 的执行顺序 在 select 后 ,select 时 别名生效.

  3. limit执行顺序永远在最后.

posted @ 2019-07-29 22:21  Avicii_2018  阅读(292)  评论(0编辑  收藏  举报