select語句結構與執行順序
select語句的結構與執行順序,下面的序號代表執行順序
8 ? ? ? ? SELECT (9)DISTINCT
11 ? ? ?
1 ? ? ? ? ROM
3 ? ? JOIN
2 ON
4 ? ? ? ? WHERE
5 ? ? ? ?GROUP BY
6 ? ? ? ?WITH {CUBE | ROLLUP}
7 ? ? ? ?HAVING
10 ? ? ?ORDER BY
補充說明:1、將以上順序結構理解為每個步驟產生一個虛擬表,該虛擬表被用作下一個步驟的輸入。只有最后一步生成的表返回給調用者。
2、如果FROM子句包含兩個以上的表,則對上一個聯接生成的結果表和下一個表重復執行步驟1到步驟3,直到處理完所有的表為止。
3、在帶有group ?by子句的查詢中,select列指定的字段要么是group ?by子句中的字段,要么包含在聚合函數中
(也就是說在帶有group ?by子句的查詢中,只要select的子句中出現的字段,在group by 子句中都必須出現,除非是聚合函數)
4、having 子句作用就是放在group by子句后面與其組合使用,用于進一步篩選
5、DISTINCT是在對having過程做進一步處理