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则不以任何表为基准,只列出符合条件的记录。


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