自然左右外聯接的區別

在 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 小軍

 

SELECT *
FROM acc
LEFT 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 小華

 

 

SELECT *
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 小軍
 
 
得出以下結論: 所謂左表也就是你from的表,右表就是你join的表
leftjion 的意思就是以左表的紀錄爲準,反之rightjoin
還想說說啥時候用,也就是說,倆個表的數據不對稱的時候用,
可能基礎了點,但是越基礎越重要麼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章