sql中left join與rignt join的區別

left join 以左邊的表爲基礎,右邊的表可能出現空值。即左表的記錄會全部顯示出來,而右表只會顯示符合搜索條件的記錄。

right join 以右邊的表爲參考,左邊的表可能出現空值。同上。

如一個例子

表a

表b


①兩個表a,b連接,取出id相同的字段

select * from a 
inner join b
on a.aid=b.bid;
結果爲:

換一下順序

select * from a 
inner join b
on a.aid=b.bid;
結果爲

發現結果一樣,只是結果的排列順序有變化。由此可以得出inner join並不以誰爲準,只顯示符合條件的記錄。

②那麼left join指:

select * from a
left join b
on a.aid = b.bid;
此時結果爲:

首先取出a中所有數據,然後再加上與a,b匹配的數據,發現表b中出現null值。

③right join是指

select * from a
right join b
on a.aid = b.bid;
結果爲:

同理,a中出現null值。

再舉一個例子。
表c

表d

①inner join時

select * from c
inner join b
on c.cID = d.dID;
結果爲:

調一下順序

select * from d
inner join c
on c.cID = d.dID;
結果爲

發現二者結果仍然一樣。

②left join時

select * from c
left join b
on c.cID = d.dID;
結果爲:

③right join時

select * from c
right join b
on c.cID = d.dID;
結果爲:

通過以上結果可以看出,

left join 以左表爲基準,會列出左表所有記錄,然後列出右表所有符合條件的記錄。

right join則以右表爲基準,列出右表所有記錄,再列出左表所有符合條件的記錄。

inner join則不以任何表爲基準,只列出符合條件的記錄。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章