在 FROM 子句中指定外聯接時,可以由下列幾組關鍵字中的一組指定:
LEFT JOIN 或 LEFT OUTER JOIN。
左向外聯接的結果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均爲空值。
RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將爲左表返回空值。
FULL JOIN 或 FULL OUTER JOIN。
完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。
僅當至少有一個同屬於兩表的行符合聯接條件時,內聯接才返回行。內聯接消除與另一個表中的任何行不匹配的行。而外聯接會返回 FROM 子句中提到的至少一個表或視圖的所有行,只要這些行符合任何 WHERE 或 HAVING 搜索條件。將檢索通過左向外聯接引用的左表的所有行,以及通過右向外聯接引用的右表的所有行。完整外部聯接中兩個表的所有行都將返回。
現在假設有學生表,學生課程分數表
c_id | s_id | subject | acc | |||
---|---|---|---|---|---|---|
1 | 1 | 語文 | 98 | |||
2 | 1 | 數學 | 90 | |||
3 | 2 | 英語 | 2 |
ids | name | gender | |||
---|---|---|---|---|---|
1 | 小明 | 男 | |||
2 | 小華 | 女 | |||
3 | 小蘭 | 女 | |||
4 | 小軍 | 男 |
FROM acc
LEFT JOIN student ON s_id = ids
LIMIT 0 , 30
FROM acc
RIGHT JOIN student ON s_id = ids
LIMIT 0 , 30
c_id | s_id | subject | acc | ids | name | gender |
---|---|---|---|---|---|---|
1 | 1 | 語文 | 98 | 1 | 小明 | 男 |
2 | 1 | 數學 | 90 | 1 | 小明 | 男 |
3 | 2 | 英語 | 2 | 2 | 小華 | 女 |
NULL | NULL | NULL | NULL | 3 | 小蘭 | 女 |
NULL | NULL | NULL | NULL | 4 | 小軍 | 男 |