--- tags: SQL --- # MySQL JOINS ![](https://i.imgur.com/V5Hzbiw.png) 常見 `Join` 語法為下,將個別說明: 1. INNER JOIN 1. LEFT JOIN 1. RIGHT JOIN 1. OUTER JOIN 1. LEFT JOIN EXCLUDING INNER JOIN 1. RIGHT JOIN EXCLUDING INNER JOIN 1. OUTER JOIN EXCLUDING INNER JOIN ## Inner Join ![](https://i.imgur.com/nOrGzpQ.png) 這是最簡單、最容易理解並且最常見的 `Join`。此查詢將返回在右表(表 B)中具有匹配記錄的左表(表 A)中的所有記錄。以下為 `Join` 範例: ```sql= SELECT <select_list> FROM Table_A A INNER JOIN Table_B B ON A.Key = B.Key ``` ## LEFT JOIN ![](https://i.imgur.com/JdBQvbN.png) 此查詢將返回左表(表 A)中的所有記錄,而不管這些記錄中的任何記錄是否在右表(表 B)中具有匹配項。它還將從右表中返回任何匹配的記錄。以下為 `LEFT JOIN` 範例: ```sql= SELECT <select_list> FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key ``` ## RIGHT JOIN ![](https://i.imgur.com/JGbfjaW.png) 此查詢將返回右表(表 B)中的所有記錄,無論這些記錄中的任何記錄是否在左表(表 A)中具有匹配項。它還將從左表中返回任何匹配的記錄。以下為 `RIGHT JOIN` 範例: ```sql= SELECT <select_list> FROM Table_A A RIGHT JOIN Table_B B ON A.Key = B.Key ``` ## OUTER JOIN ![](https://i.imgur.com/42ISwTr.png) 這個 `JOIN` 可以被稱為 `FULL OUTER JOIN` 或 `FULL JOIN`。這個查詢會返回兩個表中的所有記錄,將左表(表 A)中的記錄與右表(表 B)中的記錄相匹配。這個 `JOIN` 的語法如下: ```sql= SELECT <select_list> FROM Table_A A FULL OUTER JOIN Table_B B ON A.Key = B.Key ``` ## LEFT JOIN EXCLUDING INNER JOIN ![](https://i.imgur.com/fx45JZp.png) 這個查詢會返回左表(表 A)中與右表(表 B)中的任何記錄都不匹配的所有記錄。換句話說,它將返回左表中沒有與右表匹配的記錄。 ```sql= 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 ![](https://i.imgur.com/h1UDtED.png) 這個查詢會返回右表(表 B)中與左表(表 A)中的任何記錄都不匹配的所有記錄。換句話說,它將返回右表中沒有與左表匹配的記錄。這個 `JOIN` 的語法可以這樣寫: ```sql= 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 ![](https://i.imgur.com/bai9k0x.png) 這個查詢會返回左表(表 A)中所有不匹配的記錄和右表(表 B)中的所有記錄。換句話說,它將返回左表中沒有與右表匹配的記錄,以及右表中所有的記錄。雖然您目前沒有使用這種類型的 `JOIN`,但您經常使用其他類型的 `JOIN`。這個 `JOIN` 的語法可以這樣寫: ```sql= 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](https://www.codeproject.com/Members/Christopher-Moffatt) 原文網址:[Visual Representation of SQL Joins](https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins)