SQL --mysql的sql执行顺序

直接上sql完整的代码sql

(8)select
(9)distinct
    t1.id,t1.name
(1)from 
    t_table1 t1 
(3)<join_type> join 
    t_table2 t2
(2)on
    t1.id = t2.id
(4)where
    <where condition>
(5)group by
    <group_by condition>
(6)with
    <cube | rollup>
(7)having
    <having condition>
(10)order by
    <order_by condition>
(11)limit
    <limit condition>

分析sql处理的每一个阶段
1.from:对from后面的表进行笛卡尔积,产生虚表VT1
2.on:对虚表VT1进行on筛选,产生虚表VT2
3.join:若是是inner join,则直接产生VT3==VT2,若是是outer join(即left join或right join或full join),那须要按照外部连接规则,将VT1中没有匹配到的数据添加到VT2,产生VT3
4.where:对虚表VT3进行where过滤,符合条件的数据被记录到虚表VT4中
5.group by:对虚表VT4进行分组操做,产生VT5
6.cube | rollup:对虚表VT5进行cube或rollup操做,产生虚表VT6
7.having:对虚表VT6进行having过滤,产生VT7
8.select:执行select操做,选择虚表VT7中指定的列,插入到虚表VT8中
9.distinct:对虚表VT8进行去重操做,产生虚表VT9
10.order by:对虚表VT9进行排序,产生虚表VT10
11.limit:抽出指定行的记录,产生虚表VT11,将结果返回code

相关文章
相关标签/搜索