select語句的結(jié)構(gòu)與執(zhí)行順序,下面的序號(hào)代表執(zhí)行順序
8 SELECT (9)DISTINCT
11 <TOP_specification> <select_list>
1 ROM <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>
補(bǔ)充說明:1、將以上順序結(jié)構(gòu)理解為每個(gè)步驟產(chǎn)生一個(gè)虛擬表,該虛擬表被用作下一個(gè)步驟的輸入。只有最后一步生成的表返回給調(diào)用者。
2、如果FROM子句包含兩個(gè)以上的表,則對上一個(gè)聯(lián)接生成的結(jié)果表和下一個(gè)表重復(fù)執(zhí)行步驟1到步驟3,直到處理完所有的表為止。
3、在帶有g(shù)roup by子句的查詢中,select列指定的字段要么是group by子句中的字段,要么包含在聚合函數(shù)中
(也就是說在帶有g(shù)roup by子句的查詢中,只要select的子句中出現(xiàn)的字段,在group by 子句中都必須出現(xiàn),除非是聚合函數(shù))
4、having 子句作用就是放在group by子句后面與其組合使用,用于進(jìn)一步篩選
5、DISTINCT是在對having過程做進(jìn)一步處理
聯(lián)系客服