Mysql DQL语言执行顺序
Mysql DQL语言执行顺序:
select 查询列表 ⑦
from 表1 别名 ①
连接类型 join 表2 ②
on 连接条件 ③
where 筛选 ④
group by 分组列表 ⑤
having 筛选 ⑥
order by排序列表 ⑧
limit 起始条目索引,条目数; ⑨
1、from:首先对from子句中前两个表执行笛卡尔乘积,生成虚拟表1
2、on:使用on筛选器,在虚拟表1中根据逻辑表达式筛选出满足条件的行行或多行,生成虚拟表2
3、join:如果是join,则添加匹配的外部行;如果是left join就把左边第二步中未匹配的行添加进来,如果是right join就把右表在第二步中未匹配的行添加进来,生成虚拟表3.
4、where:对虚拟表3执行where条件进行过滤,符合条件的生成虚拟表4
5、group by:对虚拟表4进行分组操作生成虚拟表5
6:having:在虚拟表5上继续执行having后的条件筛选,将满足条件的生成虚拟表6
7:select:在虚拟表6上进行查询操作,生成虚拟表7
8:order by:将虚拟表7按照order by后的条件进行排序升序或降序排列:desc,asc(默认asc降序)生成虚拟表8
9:limit:在虚拟表8上取出指定的行的记录,生成虚拟表9,并返回