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

相關文章
相關標籤/搜索