select * from ProductTable inner join ProductClassTable on ProductTable.ClassId=ProductClassTable.Id where exists(select Id from ProductClassTable)
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 ----交差连接,生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
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 ----交差连接,生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
本文详细介绍了SQL中的不同连接类型,包括内连接、左连接、右连接及全连接等,并通过实例展示了每种连接方式的特点及应用场景。
335

被折叠的 条评论
为什么被折叠?



