sql server join联结

join学习起来有点乱,现做如下整理:

table A

idabc
1a
2b
3c
4d

table B

idabc
1e
2a
3f
4c

    --join或者inner join (内连接、等值连接):只返回两个表中连接字段相等的行。

  --select * from  A inner join B on A.abc=B.abc

idabcid1abc1
1a2a
3c4c

 

  --left join(左连接) :返回A表中所有的记录以及B表中连接字段相等的记录,没有匹配的则以null值取代。

  --select * from  A left join B on A.abc=B.abc

idabcid1abc1
1a2a
2bnullnull
3c4c
4dnullnull

  --right join(右连接):返回B表中所有的记录以及A表中连接字段相等的记录,没有匹配的则以null值取代。

  --select * from  A right join B on A.abc=B.abc

idabcid1abc1
nullnull1e
1a2a
nullnull3f
2c4c

   --full join(外连接、全连接):返回两个表中的行:left join + right join。对于没有匹配的记录,则会以null做为值。

  --select * from  A full join B on A.abc=B.abc

Venn diagram of SQL cartesian join        

idabcid1abc1
1a2a
2bnullnull
3c4c
4dnullnull
nullnull1e
nullnull3f

    --先按照A表中的记录一条一条到B表找匹配项,没有则用null代替。

    --再按照B表中的记录一条一条到A表找匹配项,没有则用null代替。

    --排除重复的记录,则为最后结果

  --cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。

 

转载于:https://www.cnblogs.com/llljpf/p/6510546.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值