将基于匹配列的两个不同表中的几行插入到新表中

时间:2019-11-18 21:31:17

标签: sql-server join

您好,SQL Server专家

我想从两个不同的表中获取数据并将它们插入到单独的新(第三个)表中。我已经用所需的列和数据类型创建了第三张表的外壳。但是,两个表中有一个common / linking列,我们将此列称为identifier varchar(10)

要正确地将两个表中的数据插入第三个表中而不重复,我的代码是否需要如下所示:

insert into Third_Table
select (identifier, column2, column3, column4)
from First_Table
select (identifer, column5, column6)
from Second_Table
full join First_Table.identifier = Second_Table.identifier;

感谢任何律师!

2 个答案:

答案 0 :(得分:0)

您似乎希望同时full join两个表并将结果插入目标表中。

考虑:

insert into Third_Table
select 
    coalesce(t2.identifier, t2.identifier)
    case when t2.identifier is not null then t2.column2 else t3.column5 end
    case when t2.identifier is not null then t2.column3 else t3.column6 end
    case when t2.identifier is not null then t2.column4 else t3.column7 end
from first_Table t1
full outer join Second_Table t2 on t1.identifier = t2.identifier;

注意:您的原始表在Second_Table中似乎缺少一列,在First_Table上只有三个wo列可插入四个,因此我添加了它。

答案 1 :(得分:0)

如果是1到1,我认为您正在追求类似:

INSERT INTO Third_Table
SELECT First_Table.identifier, First_Table.column2, First_Table.column3, First_Table.column4, Second_Table.identifer, Second_Table.column5, Second_Table.column6
FROM First_Table
INNER JOIN Second_Table ON First_Table.identifier = Second_Table.identifier

如果没有,请确保使用正确的联接类型。