(8)SELECT (9)DISTINCT<select_list>
(1)FROM<left_table>
(3)<join_type>JOIN<right_table>
(2)ON<join_condition>
(4)WHERE<where_condition>
(5)GROUP BY<group_by_list>
(6)WITH{CUBE|ROLLUP}
(7)HAVING<having_condition>
(10)ORDER BY<order_by_list>
(11)LIMIT<limit_number>
- FROM:對FROM子句中的左表<left_table>和右表<right_table>執(zhí)行笛卡爾積把夸,產(chǎn)生虛擬表VT1鲫趁。
- ON:對虛擬表VT1應(yīng)用ON篩選,只有那些符合<join_condition>的行才被插入虛擬表VT2中萧落。
- JOIN:如果指定了OUTER JOIN(如LEFT OUTER JOIN珊随、RIGHT OUTER JOIN),那么保留表中未匹配的行作為外部行添加到虛擬表VT2中污淋,產(chǎn)生虛擬表VT3顶滩。如果FROM子句中包含兩個以上的表,則對上一個連接生產(chǎn)的結(jié)果表VT3,和下一個表重復(fù)執(zhí)行步驟1~步驟3寸爆,直到處理完所有表礁鲁。
- WHERE:對虛擬表VT3應(yīng)用WHERE過濾條件,只有符合<where_condition>的記錄才被插入虛擬表VT4中赁豆。
- GROUP BY:根據(jù)GROUP BY子句中的列仅醇,對VT4中的記錄進行分組操作,產(chǎn)生VT5魔种。
- WITH {CUBE | ROLLUP}:對表VT5進行CUBE或ROLLUP操作析二,產(chǎn)生表VT6。
- HAVING:對虛擬表VT6應(yīng)用HAVING過濾器节预,只有符合<having_condition>的記錄才被插入到虛擬表VT7中叶摄。
- SELECT:第二次執(zhí)行SELECT操作,選擇指定的列安拟,插入到虛擬表VT8中蛤吓。
- DISTINCT:去除重復(fù)數(shù)據(jù),產(chǎn)生虛擬表VT9糠赦。
- ORDER BY:將虛擬表VT9中的記錄按照<order_by_list>進行排序操作会傲,產(chǎn)生虛擬表VT10。
- LIMIT:取出指定行的記錄拙泽,產(chǎn)生虛擬表VT11淌山,并返回給查詢用戶。