MySQL JOINS

常見 Join 語法為下,將個別說明:

  1. INNER JOIN
  2. LEFT JOIN
  3. RIGHT JOIN
  4. OUTER JOIN
  5. LEFT JOIN EXCLUDING INNER JOIN
  6. RIGHT JOIN EXCLUDING INNER JOIN
  7. OUTER JOIN EXCLUDING INNER JOIN

Inner Join

這是最簡單、最容易理解並且最常見的 Join。此查詢將返回在右表(表 B)中具有匹配記錄的左表(表 A)中的所有記錄。以下為 Join 範例:

SELECT <select_list> FROM Table_A A INNER JOIN Table_B B ON A.Key = B.Key

LEFT JOIN

此查詢將返回左表(表 A)中的所有記錄,而不管這些記錄中的任何記錄是否在右表(表 B)中具有匹配項。它還將從右表中返回任何匹配的記錄。以下為 LEFT JOIN 範例:

SELECT <select_list> FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key

RIGHT JOIN

此查詢將返回右表(表 B)中的所有記錄,無論這些記錄中的任何記錄是否在左表(表 A)中具有匹配項。它還將從左表中返回任何匹配的記錄。以下為 RIGHT JOIN 範例:

SELECT <select_list> FROM Table_A A RIGHT JOIN Table_B B ON A.Key = B.Key

OUTER JOIN

這個 JOIN 可以被稱為 FULL OUTER JOINFULL JOIN。這個查詢會返回兩個表中的所有記錄,將左表(表 A)中的記錄與右表(表 B)中的記錄相匹配。這個 JOIN 的語法如下:

SELECT <select_list> FROM Table_A A FULL OUTER JOIN Table_B B ON A.Key = B.Key

LEFT JOIN EXCLUDING INNER JOIN

這個查詢會返回左表(表 A)中與右表(表 B)中的任何記錄都不匹配的所有記錄。換句話說,它將返回左表中沒有與右表匹配的記錄。

SELECT <select_list> FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key WHERE B.Key IS NULL

RIGHT JOIN EXCLUDING INNER JOIN

這個查詢會返回右表(表 B)中與左表(表 A)中的任何記錄都不匹配的所有記錄。換句話說,它將返回右表中沒有與左表匹配的記錄。這個 JOIN 的語法可以這樣寫:

SELECT <select_list> FROM Table_A A RIGHT JOIN Table_B B ON A.Key = B.Key WHERE A.Key IS NULL

OUTER JOIN EXCLUDING INNER JOIN

這個查詢會返回左表(表 A)中所有不匹配的記錄和右表(表 B)中的所有記錄。換句話說,它將返回左表中沒有與右表匹配的記錄,以及右表中所有的記錄。雖然您目前沒有使用這種類型的 JOIN,但您經常使用其他類型的 JOIN。這個 JOIN 的語法可以這樣寫:

SELECT <select_list> FROM Table_A A FULL OUTER JOIN Table_B B ON A.Key = B.Key WHERE A.Key IS NULL OR B.Key IS NULL

原文來源

本文作者:C.L. Moffatt
原文網址:Visual Representation of SQL Joins