表A有一个字段。 表B有很多字段。
我想将表A中的每个值复制到表B中的一行,但我没有用于连接这两个表的值。
只要表A中的每个值仅在表B中出现一次,A中的每个值中的哪一行都无关紧要。
我不想使用循环。
答案 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
的数据。如果没有,数据将会丢失。