MySQL sql語句執行順序
阿新 • • 發佈:2017-07-08
left join left 笛卡爾積 ner 別名 join 例如 結果 detail
sql語句select語句查詢順序
- (7) SELECT
- (8) 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) HAVING <having_condition>
- (9) ORDER BY <order_by_condition>
- (10) LIMIT <limit_number>
一、執行FROM
語句,mysql是從左往右執行,oracle是從右往左執行,SQL語句的執行過程中,都會產生一個虛擬表,用來保存SQL語句的執行結果(這是重點),執行from語句之後會產生一個虛擬表暫時叫VT1(vitual table 1),VT1是根據笛卡爾積生成
二、執行on進行過濾
根據on後面的條件過濾掉不符合條件的數據,參數VT2
三、執行鏈接的類型
inner join內連接、left join左鏈接、right右鏈接、outer join 外鏈接、full outer join 全連接
執行完產生VT3
四、執行where後面的條件
這時候使用WHERE條件的時候要註意:不能使用組函數、並且字段的別名不能放到條件中使用
例如SELECT city as c FROM t WHERE c=‘shanghai‘
五、執行group by 進行分組
六、執行having過濾
HAVING
子句主要和GROUP BY
子句配合使用,having後面可以跟組函數的條件
七、執行select
八、執行distinct,去掉重復的數據
九、執行order by 語句排序
十、執行分頁語句
轉自: http://blog.csdn.net/u010833154/article/details/50696583
MySQL sql語句執行順序