左/右连接以接收所有行

时间:2016-01-11 10:50:50

标签: sql sql-server-2008 tsql

如何将两个表连接在一起以从每个表中获取所有行,并输入NULL,而另一个表中缺少一个。

例如:

declare @t1 table (x int)
declare @t2 table (x int)

insert into @t1 select 2
insert into @t1 select 3
insert into @t1 select 4
insert into @t1 select 5

insert into @t2 select 1
insert into @t2 select 2
insert into @t2 select 5

select * 
from @t1 t1
left join @t2 t2 on t2.x = t1.x

结果应如下所示:

t1.x    t2.x
NULL    1
2       2
3       NULL
4       NULL
5       5

3 个答案:

答案 0 :(得分:2)

select * 
from @t1 t1
full outer join @t2 t2 on t2.x = t1.x

这就像是左连接,但是即使没有匹配也会从两个表中获取所有记录,并且在没有匹配时输入null。

答案 1 :(得分:2)

select * 
from @t1 t1
FULL OUTER join @t2 t2 on t2.x = t1.x

答案 2 :(得分:2)

两个表中的所有行都以完整外部联接的形式返回。 SQL Server对FROM子句中指定的外连接使用以下ISO关键字:LEFT OUTER JOIN或LEFT JOIN。正确的外部联接或正确的联接。完全外部加入或全部加入