有关通过联合加入2表的SQL Server查询

时间:2018-07-10 02:25:32

标签: sql-server

我有两个表T1T2,它们都包含列IDvalue

我需要通过T1T2T3加入ID

T3应包含列IDT1ValueT2Value

主要要求是,ID中的T1T2可能未映射

T1

ID   VALUE
-----------
1    hi
2    hello

T2

ID   VALUE
----------
2    kitty
3    dog

然后,T3应该是

ID   T1VALUE   T2VALUE
----------------------
 1   hi
 2   hello     kitty
 3             dog

是否可以在不使用数据透视表或临时表的情况下实现这一目标(理想情况下应该是单个可执行查询)?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用FULL OUTER JOIN

SELECT ID      = COALESCE(T1.ID, T2.ID),
       T1VALUE = T1.VALUE,
       T2VALUE = T2.VALUE
FROM   T1
       FULL OUTER JOIN T2
       ON  T1.ID = T2.ID

FULL OUTER JOIN上有很多示例。只是搜索

另一种方法是使用UNION ALL

SELECT T1.ID, T1VALUE = T1.VALUE, T2VALUE = NULL
FROM   T1

UNION ALL

SELECT T2.ID, T1VALUE = NULL,     T2VALUE = T2.VALUE
FROM   T2