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执行顺序永远在最后.
钟声敲响了日落,柏油路跃过山坡,一直通向北方的是我们想象,长大后也未曾经过~