Sql server 如何在不重复相同布局的情况下,对两个表进行完全外部联接?

Sql server 如何在不重复相同布局的情况下,对两个表进行完全外部联接?,sql-server,tsql,join,full-outer-join,Sql Server,Tsql,Join,Full Outer Join,我必须创建具有相同布局(相同列)的表。有一个ID和其他数据。我需要一个只返回一个ID的查询,如果该ID在所需的表中不可用,则将数据字段设置为null 例如: Table A ID - Val1 - Val2 1 - 2 - 2 2 - 3 - 3 4 - 1 - 5 Table B ID - Val1 - Val2 2 - 3 - 3 3 - 2 - 1 4 - 2 - 3 Result ID - Val1A - Val2A - Val1B - Val2B 1 - 2 - 2 - NULL

我必须创建具有相同布局(相同列)的表。有一个ID和其他数据。我需要一个只返回一个ID的查询,如果该ID在所需的表中不可用,则将数据字段设置为null

例如:

Table A 
ID - Val1 - Val2
1 - 2 - 2
2 - 3 - 3
4 - 1 - 5

Table B
ID - Val1 - Val2
2 - 3 - 3
3 - 2 - 1
4 - 2 - 3

Result
ID - Val1A - Val2A - Val1B - Val2B
1 - 2 - 2 - NULL - NULL
2 - 3 - 3 - 3 - 3
3 - NULL - NULL - 2 - 1
4 - 1 - 5 - 2 - 3

我正在使用MS SQL Server。谢谢

使用coalesce获取非null id,对于不匹配的表,其他列将为null

select coalesce(a.id,b.id) as ID, Val1A , Val2A , Val1B , Val2B
from TableA a
Full outer join tableB b
ON <.....>
选择coalesce(a.id,b.id)作为id,Val1A,Val2A,Val1B,Val2B
从表a
全外连接表b
在…上

你可以在这里测试一下:

我喜欢那些没有人说什么的反对票…,不是吗?
SELECT COALESCE(a.ID,b.ID) AS ID, 
      a.Val1 AS TableA_Val1, 
      a.Val2 AS TableA_Val2, 
      b.Val1 AS TableB_Val1,
      b.Val2 AS TableB_Val2
FROM TableA a
FULL OUTER JOIN TableB b
ON a.ID = b.ID