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>的结果:

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

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-01-22 01:58
社区公告
暂无公告