1. 程式人生 > >left join(左關聯)、right join(右關聯)、inner join(自關聯)的區別

left join(左關聯)、right join(右關聯)、inner join(自關聯)的區別

用一張圖說明三者的區別:

總結:

left join(左聯接) 返回包括左表中的所有記錄和右表中關聯欄位相等的記錄 

right join(右聯接) 返回包括右表中的所有記錄和左表中關聯欄位相等的記錄

inner join(等值連線) 只返回兩個表中關聯欄位相等的行
舉例如下: 
--------------------------------------------

表A記錄如下:

aID      aArea
1        北京
2     上海
3     廣州
4     深圳
5     香港
表B記錄如下:
bID   bName
1     小王
2     小張
3     小李
4     小陳
8     小黃

--------------------------------------------
1.left join
sql語句如下: 
select * from A
left join B 
on A.aID = B.bID

結果如下:
aID    aArea   bID       bName
1     北京    1            小王
2     上海    2     小張
3     廣州    3     小李
4     深圳    4     小陳
5     香港    NULL   NULL

(影響行數為 5 行)
例子說明:

left join是以左邊的A表的記錄為基礎的,也就是說,左表(A)的記錄會全部展示出來,而右表(B)只會展示符合搜尋條件的記錄。

B表記錄不足的地方均為NULL.
--------------------------------------------
2.right join
sql語句如下: 
select * from A
right join B 
on A.aID = B.bID
結果如下:
aID    aArea   bID   bName
1     北京    1     小王
2     上海    2     小張
3     廣州    3     小李
4     深圳    4     小陳
NULL     NULL    8     小黃

(影響行數為 5 行)
例子說明:
right join是以右邊邊的B表的記錄為基礎的,也就是說,右表(B)的記錄會全部展示出來,而左表(A)只會展示符合搜尋條件的記錄。和left join的結果剛好相反,這次是以右表(B)為基礎的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql語句如下: 
select * from A
innerjoin B 
on A.aID = B.bID

結果如下:
aID    aArea   bID   bName
1     北京    1     小王
2     上海    2     小張
3     廣州    3     小李
4     深圳    4     小陳

(影響行數為 4行)

例子說明:
這裡只展示了A.aID = B.bID的記錄.說明inner join並不以誰為基礎,它只顯示符合條件的記錄.
--------------------------------------------
--------------------- 
作者:ChenJZ_8 
來源:CSDN 
原文:https://blog.csdn.net/ChenJZ_8/article/details/80451683 
版權宣告:本文為博主原創文章,轉載請附上博文連結!