SQL-外联接默认的属性

外联接默认的属性


今天学习T-SQL中的外联接的时候,发现一个默认的规则。


首先来说一下,外联接的逻辑顺序。

1.笛卡尔积:对两张表进行笛卡尔积,生成所有列
2.ON过滤:根据ON中的表达式进行筛选,生成内部行。
3.添加外部行:要识别保留表中按照ON条件在另一个表中找不到与之匹配的那些行,然后将这些行添加到联接的前两个步骤生成的结果表中。对于来自联接的非保留表的那些列,追加的外部行中的这些列则用NULL作为占位符。
4.最终将外部行和内部行一起输出。


 问题就在这第三个步骤里,如果在通过A.id=B.id进行联接,并且在外部行中,有多个A.id=n的行,那么这些行就会被删除,只输出一个值。
还有一种情况,就是在外部行中A.id已存在于内部行,那么,这些行也会在外部行中被全部删除。


总之,外部行中的值具有唯一性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值