直接上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