假設我們有兩張表。
- Table A 是左邊的表。
- Table B 是右邊的表。
其各有四條記錄,其中有兩條記錄是相同的,如下所示:
id name id name
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
下面讓我們來看看不同的Join會產生什么樣的結果。
1、Inner join
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
結果集
(TableA.) (TableB.)
id name id name
1 Pirate 2 Pirate
3 Ninja 4 Ninja
Inner join 產生的結果集中,是A和B的交集
2.FULL [OUTER] JOIN
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
(TableA.) (TableB.)
id name id name
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
null null 1 Rutabaga
null null 3 Darth Vader
WHERE TableA.id IS null OR TableB.id IS null

id name id name
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
注意:產生在A表中有而在B表中沒有的集合
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableB.id IS null
(TableA.) (TableB.)
id name id name
2 Monkey null null
4 Spaghetti null null
4、UNION 與 UNION ALL
UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型
UNION 只選取記錄,會選取不同的值;而UNION ALL會列出所有記錄,包括重復的