SQLServer中左右联接的问题

s-uu 2013-01-22 01:58:46
SQLServer中的左联接是不是就是以主表为主,子表中内容不符的都设为空;右联接是不是以子表为主,主表中条件不符的设为空,我这样理解对吗?
以下面的语句为例:
1>SELECT * FROM [A] LEFT JOIN [B]
on [A].a = [B].a AND [A].c = [B].c AND [A].e = [B].e
这个就是以A表为主,B表中不符合条件的都设为空?
2>SELECT * FROM [A] RIGHT JOIN [B]
on [A].a = [B].a AND [A].c = [B].c AND [A].e = [B].e
这个就是以B表为主,表A中符合条件的都设为空?

附A表数据

B表数据

1>的结果:
2>的结果:

各位大侠,我的理解对吗?
...全文
153 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq794285260 2013-01-26
  • 打赏
  • 举报
回复
内联是取两个表的共有部分 左外联:左表中的全部显示右表与之相匹配的显示如果没有全部置空; 右外联与上取反。。。
GiveMePressure 2013-01-22
  • 打赏
  • 举报
回复
以右外连接为例 连接操作逻辑过程: 第一步:两个表求笛卡尔积,得到一个临时表temp1 第二部:根据连接条件( on contidition)筛选temp1中符合数据的部分,得到一个临时表temp2 第三部:根据temp2删除右边表没有的数据,右表中有但是左边表没有对应列,就用NULL填充,得到临时表temp3 具体物理执行过程: 其实就是循环:比如从右表中取出一条数据, 拿着这个数据区左边表中根据连接条件查询符合的数据, 就这样一直到把右边表中所有数据全部取出来为止。 生成一个临时表返回给你。 Over 具体看SQL技术内幕
szm341 2013-01-22
  • 打赏
  • 举报
回复
左联接与右联接还有全联接,这些统称为外联接 左右联接的区别也仅仅是主表的位置不同,左联接主表在左侧,右联接主表在右侧,仅此而已 他俩都是以主表的数据为准,从表不匹配的数据用null补足

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧