用一張圖說明三者的區別:
總結:
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並不以誰為基礎,它只顯示符合條件的記錄.
--------------------------------------------