我有的
在手上呢?
请问你说的关于理解正好相反,是不是说关于那个 “右外连接返回的是所有左边的列值+右边的空值或者匹配值”
帮助文档里有“通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行”以及“在 WHERE 子句中使用 *= 和 =* 运算符指定外联接的旧式语法。”
按课本上的讲解,他所说的*在右,称右外连接,返回的左边表中的所有列,是与帮助文档里的解释有冲突,
楼主读书真是很认真,佩服+向你学习!
在手上呢?
请问你说的关于理解正好相反,是不是说关于那个 “右外连接返回的是所有左边的列值+右边的空值或者匹配值”
帮助文档里有“通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行”以及“在 WHERE 子句中使用 *= 和 =* 运算符指定外联接的旧式语法。”
按课本上的讲解,他所说的*在右,称右外连接,返回的左边表中的所有列,是与帮助文档里的解释有冲突,
楼主读书真是很认真,佩服+向你学习!
--在分析器中运行看看他们的区别
declare @tbl1 table(id1 char(10) ,name1 char(10))
insert @tbl1 select
'1','a' union select
'2','b' union select
'33','d' union select
'44','e'
select '弟一','個表' union all
select * from @tbl1
declare @tbl2 table(id2 char(10),name2 char(10))
insert @tbl2 select
'1','a' union select
'2','b' union select
'55','d' union select
'66','e'
select '弟二','個表' union all
select * from @tbl2
select '内連接','記録数=','表1表2','関連の記録' union all
select * from @tbl1 as a inner join @tbl2 as b on a.id1 = b.id2--内連接
select '左連接','','関連記録外','表1記録全有' union all
select * from @tbl1 as a left join @tbl2 as b on a.id1 = b.id2--左連接
select '右連接','','関連記録外','表2記録全有' union all
select * from @tbl1 as a right join @tbl2 as b on a.id1 = b.id2--右連接
select '全連接','',' 表1和表2','所有記録' union all
select * from @tbl1 as a full join @tbl2 as b on a.id1 = b.id2 --全連接
select '交差連接','記録数=','表1記録数×','表2記録数' union all
select * from @tbl1 as a cross join @tbl2 as b --交差連接