數據庫之左關聯、右關聯、等值關聯


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

     

總結:

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並不以誰為基礎,它只顯示符合條件的記錄.
--------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM