sql的表链接left join,right join

left join左联接:返回左表所有记录即使在右表中没有匹配的记录,右表中没有匹配的记录就设为null

例子如下:

-----------------------------------------------------                               

PERSON表

IDp          NUMBERp

1                 011111

2                 011112

3                 011113


ORDER表

IDo         ORDERNO         IDp

1              77895                  1

2              44678                  1

3              23456                  2

4              24562                  2


查询:查出PERSON表中所有账号对应的所有订单ID(如果有的话)

select PERSON.IDp, ORDER.ORDERNO, ORDER.IDo from  PERSON

left join ORDER on PERSON.IDp=ORDER.IDp

order by PERSON.IDp


结果集:

IDp        ORDERNO        IDo

1             77895                 1

1             44678                 2

2             23456                 3

2             24562                 4

3                                          


由以上表可知,IDp=3的用户没有订单记录,从而其对应IDo和ORDERNO的查询结果为空,left join的查询结果返回左表(PERSON)所有行


right join右连接,返回右表内所有记录即使左表中没有匹配项

PERSON表

IDp          NUMBERp

1                 011111

2                 011112

3                 011113


ORDER表

IDo         ORDERNO         IDp

1              77895                  1

2              44678                  1

3              23456                  2

4              24562                  65

查询:查出所有订单和下订单的人

select ORDER.IDoORDER.ORDERNO, PERSON.IDp from  PERSON

right join ORDER on PERSON.IDp=ORDER.IDp

order by PERSON.IDp


结果集:

IDo        ORDERNO        IDp

1             77895                 1

2             44678                 1

3             23456                 2

4             24562                 


由结果集可知,返回内容中IDo=4 在PERSON表里没有对应记录,所以其IDp为空                                  

总结:

left join:即使右表中没有匹配,也返回左表内的所有记录

right join:即使左表没有记录,也返回右表内所有记录

左右的区分以关键词为界



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值