【问题标题】:How to do a full outer join of two tables with the same layout not repeating the?如何对具有相同布局的两个表进行完全外连接而不重复?
【发布时间】:2012-05-22 08:09:12
【问题描述】:

我必须使用相同布局(相同列)的表格。有一个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。谢谢!

【问题讨论】:

  • 我喜欢那些没有人说什么的反对票......,不是吗?

标签: sql-server tsql join full-outer-join


【解决方案1】:

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

select coalesce(a.id,b.id) as ID, Val1A , Val2A , Val1B , Val2B
from TableA a
Full outer join tableB b
ON <.....>

【讨论】:

    【解决方案2】:
    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
    

    你可以在这里测试它:http://sqlfiddle.com/#!3/51b8c/3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2023-03-20
      • 2022-01-11
      • 2012-04-25
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多