1. 程式人生 > >MySQL sql語句執行順序

MySQL sql語句執行順序

left join left 笛卡爾積 ner 別名 join 例如 結果 detail

sql語句select語句查詢順序

  1. (7) SELECT
  2. (8) DISTINCT <select_list>
  3. (1) FROM <left_table>
  4. (3) <join_type> JOIN <right_table>
  5. (2) ON <join_condition>
  6. (4) WHERE <where_condition>
  7. (5) GROUP BY <group_by_list>
  8. (6) HAVING <having_condition>
  9. (9) ORDER BY <order_by_condition>
  10. (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語句執行順序