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



您好,SQL Server专家,

我想从两个不同的表中获取数据,并将它们插入一个单独的新表(第三个(中。我已经创建了第三个表的shell,其中包含所需的列和数据类型。但是,在这两个表中有一个公共/链接列,让我们将此列称为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;

谢谢你的建议!

您似乎正在查找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上的四列,我添加了它。

如果是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

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

最新更新