如何将一个表中的值插入到另一个表中而没有值连接到内部?

时间:2017-04-12 05:47:45

标签: sql sql-server

表A有一个字段。 表B有很多字段。

我想将表A中的每个值复制到表B中的一行,但我没有用于连接这两个表的值。

只要表A中的每个值仅在表B中出现一次,A中的每个值中的哪一行都无关紧要。

我不想使用循环。

1 个答案:

答案 0 :(得分:1)

您可以为两个表中的每个表分配一个行号,然后执行更新连接:

Dictionary

此解决方案做了几个假设,包括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的数据。如果没有,数据将会丢失。