基本上我有一个包含1000行和3列的表。 (表A)
我有另外一个包含200列和100万条记录的表。 (表B)
我正在尝试将表格B的1000行的三列替换为表A的那些。我已经阅读了很多solutions,您可以从表A中插入表B ..但是这是无用的,因为我在剩下的197列中得到NULL,我需要数据。
因此,任务是从一个表中替换某些列的行以选择另一个表的列。没有条件,只有顶行或任何你能想到的顺序都没问题。如果你能给出一个将ORDER BY考虑在内的答案,那就是奖金!非常感谢!
答案 0 :(得分:5)
如果我理解你的要求
WITH TA
AS (SELECT *,
ROW_NUMBER()
OVER (
ORDER BY col1) AS RN
FROM TableA),
TB
AS (SELECT *,
ROW_NUMBER()
OVER (
ORDER BY col1) AS RN
FROM TableB)
UPDATE TB
SET TB.col1 = TA.col1,
TB.col2 = TA.col2,
TB.col3 = TA.col3
FROM TB
JOIN TA
ON TB.RN = TA.RN
答案 1 :(得分:3)
尝试这样的事情:
WITH topB AS (
SELECT TOP 1000 row_number() OVER(ORDER BY field_n) rn, b.* FROM table_b b
ORDER BY field_x),
topA AS (
SELECT row_number() OVER(ORDER BY field_m) rn, a.*
FROM table_a a)
UPDATE b
SET
b.Field_1 = a.Field_1,
b.Field_2 = a.Field_2,
b.Field_3 = a.Field_3
FROM
TopB b JOIN TopA a ON b.rn = a.rn
这里的想法是在两个表中分配行号,用这些数字连接它们,并用A中的值更新连接的B部分。