T-SQL 合并两个具有常见和不常见列的表
Posted
技术标签:
【中文标题】T-SQL 合并两个具有常见和不常见列的表【英文标题】:T-SQL merging two tables with common and uncommon columns 【发布时间】:2019-10-18 08:51:14 【问题描述】:这是我的问题。我有两个包含常见和不常见列的表,如下所示: 在 T SQL 或 SSIS 中是否有有效的方法来执行此操作? 谢谢
表 1:
a b c
1 2 3
7 8 9
表 2:
a d k
4 6 7
9 0 2
合并表:
a b c d k
1 2 3 null null
7 8 9 null null
4 null null 6 7
9 null null 0 2
【问题讨论】:
FULL OUTER JOIN
? Using the SQL-92 FULL OUTER JOIN syntax
如果两个表的a
值相同怎么办?如果单个表中有重复项怎么办?
【参考方案1】:
您可以使用联合为缺少的列添加 null
select a,b,c, null d, null k
from table1
union
select a,null, null,d, k
from table1
【讨论】:
这正是我所做的,但我有近 400 列要检查,因此试图找到更简单的解决方案 基于 sql 没有快捷方式 .. 但可以在服务器端使用过程语言可以检查您的表模式 选择所有表涉及的不同列并为 400 表构建一个动态 sql 应该是方便..【参考方案2】:你想要FULL OUTER JOIN
,它在 SQLServer 中可用:
select coalesce(t1.a, t2.a), t1.b, t1.c t2.d, t2.k
from table1 t1
full outer join table2 t2 on t2.a = t1.a
【讨论】:
这里你需要ISNULL(t1.a,t2.a)
(或COALESCE
),否则最后两行的NULL
的值将是a
,而不是4
和9
.以上是关于T-SQL 合并两个具有常见和不常见列的表的主要内容,如果未能解决你的问题,请参考以下文章
MySQL:在没有 JOIN 或 UNION 的情况下合并两个不同的表