2017-04-12 35 views
0

表A只有一个字段。 表B有很多领域。如何将一个表中的值插入另一个表中,而无需内部连接它们的值?

我想将表A中的每个值复制到表B上的一行,但我没有值加入这两个表。

不要紧哪一行A中的B每一个值进入,只要在表A的每个值仅在表B.

出现一次我不想使用循环。

+3

请提供样品数据 –

+0

您需要有一些行ID。否则,当你运行脚本两次时,它会插入重复的值。 –

+0

A.FKID(INT) B.PKID(INT),B.FKID(INT) 我想将A.FKID复制到B.FKID中。 这两张表都没有提及另一张。 这两个表都是临时的(数据将用于更新表C然后丢弃) – Kirk

回答

1

你可以连续数分配到两个表,然后做一个更新联接:

WITH cte1 AS (
    SELECT col, ROW_NUMBER() OVER (ORDER BY col) rn 
    FROM TableA 
), 
WITH cte2 AS (
    SELECT *, 
      ROW_NUMBER() OVER (ORDER BY some_col) rn 
    FROM TableB 
) 
UPDATE t2 
SET col = t1.col 
FROM cte2 t2 
INNER JOIN cte1 t1 
    ON t1.rn = t2.rn 

该解决方案做了几个假设,包括TableB已有的数据来一个目标列col从第一个TableA表的单列中,并且两个表中的类型都匹配。它还假定TableB的行数多于TableA,以适合TableB的数据。否则,数据将会丢失。

相关问题