0

我有一张表TABLE1,可以通过以下方式呈现:

select * from TABLE1 order by id_conv

如:

id_conv
=======
200
201
202

另一个表TABLE2可以通过以下方式呈现:

select * from TABLE2 order by id

如:

id | id_conv
============
 1 | NULL
 2 | NULL
 3 | NULL

现在我想用TABLE1的值更新表TABLE2

TABLE1中的第1 行值到 TABLE2 中的第 1 行 TABLE1 中的第2
行值到TABLE2中的第2行TABLE1中的第 3 行值到TABLE3中的第 3 行

喜欢:

id | id_conv
============
 1 | 200
 2 | 201
 3 | 202

我该怎么做?

4

1 回答 1

3

使用ROW_NUMBER()函数,您可以根据两个表的所需顺序分配数字并加入它以进行更新

WITH CTE_Table1 AS
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY id_conv) RN --set desired ordering
    FROM Table1
)
,CTE_Table2 AS
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY id) RN --set desired ordering
    FROM Table2
)
UPDATE t2
SET t2.id_conv = t1.id_conv
FROM CTE_Table1 t1
INNER JOIN CTE_Table2 t2 on t1.RN = t2.RN
于 2013-08-14T09:43:11.553 回答