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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值