MySQL JOIN Summary

來源:互聯網
上載者:User

標籤:mysql join summary


1. JOIN文法(精簡後)

table_reference:
    table_factor
  | join_table

table_factor:
    table_subquery [AS] alias
  | ( table_references )

join_table:
    table_reference [INNER | CROSS] JOIN table_factor [join_condition]
  | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition
  | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor

join_condition:
    ON conditional_expr
  | USING (column_list)


2. JOIN分類: 內串連, 外串連.


2.1 內串連(INNER JOIN)

a. 在MySQL中, JOIN, CROSS JOIN, and INNER JOIN文法是等價的; 不指定ON條件, 得到的是笛卡爾積(That is, each and every row in the first table is joined to each and every row in the second table).


b. 內串連(INNER JOIN), 或稱等值串連, 其只顯示滿足條件的記錄.

若表left_tbl和right_tbl, 在表示內串連時, 有兩種形式: left_tbl INNER JOIN right_tbl, 和left_tbl,(comma) right_tbl. 該兩種形式在文法上是等價的, 但是JOIN的優先順序高於,(comma operator), 混用時可能產生錯誤, 最好使用JOIN.

內串連的兩種表現形式, 分別對應了兩種擷取資料的方式: ON, 和WHERE. 在使用ON時, 也都可以改寫為,(comma). 但ON說明的是: 如何完成表間的JOIN操作, 而WHERE只是在結果集種過濾出滿足條件的記錄, 含義還是有區別的.


2.2 外串連(OUTER JOIN)

a. 外串連有兩種形式: LEFT | RIGHT [OUTER] JOIN(OUTER可省略), 常見用於擷取在表left_tbl, 而不在表right_tbl中的資料.
SELECT left_tbl.* FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id WHERE right_tbl.id IS NULL; 


b. 若表a, 和b中有相同的欄位, 如c1, c2, c3, 那麼下面的兩種寫法是等價的:
a LEFT JOIN b USING (c1, c2, c3)
a LEFT JOIN b ON a.c1 = b.c1 AND a.c2 = b.c2 AND a.c3 = b.c3


c. 對於a LEFT JOIN b USING (c1, c2, c3), 和a NATURAL LEFT JOIN b擷取的結果集, 有稍許不同, 後者刪除了重複欄位. 這裡NATURAL暫看成個關鍵字吧, 可和內外串連結合使用, NATURAL JOIN的特點是, 同名欄位相串連, 且去重. 其實際作用不大.


本文出自 “感動自己” 部落格,請務必保留此出處http://coveringindex.blog.51cto.com/12533373/1953568

MySQL JOIN Summary

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.