【SQL】left join 、right join 、inner join之间的区别

  1. left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
  2. right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
  3. inner join(等值连接) 只返回两个表中联结字段相等的行

举例,表A记录如下

aIDaNum
1a20050111
2a20050112
3a20050113
4a20050114
5a20050115

表B记录如下

bIDbName
12006032401
22006032402
32006032403
42006032404
82006032408

1、left join

sql语句如下

select * from A
left join B 
on A.aID = B.bID

结果如下

aIDaNumbIDbName
1a2005011112006032401
2a2005011222006032402
3a2005011332006032403
4a2005011442006032404
5a20050115NULLNULL

(所影响的行数为 5 行)

结果说明

  1. left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的
  2. 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为:A.aID = B.bID)
  3. B表记录不足的地方均为NULL

2、right join

sql语句如下: 
select * from A
right join B 
on A.aID = B.bID

结果如下

aIDaNumbIDbName
1a2005011112006032401
2a2005011222006032402
3a2005011332006032403
4a2005011442006032404
NULLNULL82006032408

(所影响的行数为 5 行)

结果说明

仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充

3、inner join

sql语句如下

select * from A
innerjoin B 
on A.aID = B.bID

结果如下

aIDaNumbIDbName
1a2005011112006032401
2a2005011222006032402
3a2005011332006032403
4a2005011442006032404

结果说明

很明显,这里只显示出了 A.aID = B.bID的记录。这说明inner join并不以谁为基础,它只显示符合条件的记录

原文链接:https://www.cnblogs.com/assasion/p/7768931.html
作者:十七年的夏天

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值