連接查詢
連接(join連接,聯結)從兩個或更多的表中獲取結果——連接的含義是在於在水平方向上組合兩個或更多數據表,併產生一個新的結果集合。可以在Select 語句的FROM子句或Where子句中建立,在FROM子句中指出連接時有助於將連接操作與Where子句中的搜索條件區分開來。
Where子句的連接語法格式爲:
SELECT columns
FROM table1 , table2
WHERE join_condition
FROM子句的連接語法格式爲:
SELECT columns
[ON (join_condition)]
其中table1、table2指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作。對同一個表的連接又稱自連接(self-join)。
join_type 指出連接類型。
join_condition 連接條件,格式:[table1].column op [table2].column
op 比較操作符:=、<>、 <、 <=、 >、 >= 。
例
假設有兩張表:
A B
Id name id name
-- ---- -- ----
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
1、INNER JOIN:
SELECT A.id, A.name, B.id, B.name FROM A
INNER JOIN B
ON A.name = B.name
查詢結果:
-- ---- -- ----
1 Pirate 2 Pirate
3 Ninja 4 Ninja
2、FULL OUTER JOIN:
SELECT A.id, A.name, B.id, B.name FROM A
FULL OUTER JOIN B
ON A.name = B.name
查詢結果:
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
3、LEFT OUTER JOIN
SELECT A.id, A.name, B.id, B.name FROM A
LEFT OUTER JOIN B
ON A.name = B.name
查詢結果:
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
4、RIGHT OUTER JOIN
SELECT A.id, A.name, B.id, B.name FROM A
RIGHT OUTER JOIN B
ON A.name = B.name
查詢結果:
id name id name
-- ---- -- ----
null null 1 Rutabaga
1 Pirate 2 Pirate
null null 3 Darth Vader
3 Ninja 4 Ninja