SQL Server:使用不同的值更新多个行

时间:2012-10-14 18:57:10

标签: sql-server-2008

我正在尝试使用不同的值更新多行,但不需要匹配任何特定的ID。

当然,两个不同表上的两列将具有相同数量的记录。

示例,我有一个表Table1Column1以及一个包含该表中列表10项的查询( ID不是连续的)。< / p>

ID  ItemName
1    Item1
2    Item2
4    Item3
5    Item4
6    Item5
8    Item6
9    Item7
14    Item8
18    Item9
23    Item10

现在,我想要使用上面的10个项目更新另一个表Table2Column2

这也有不同的ID,但ItemName为空/空值。

ID   ItemName
301    NULL
321    NULL
323    NULL
331    NULL
333    NULL
335    NULL
336    NULL
355    NULL
377    NULL
388    NULL

所以,我正在寻找一个查询,我可以使用Table2中的10个项目更新Column2Table1,结果如下所示

ID   ItemName
301    ITem1
321    ITem2
323    ITem3
331    ITem4
333    ITem5
335    ITem6
336    ITem7
355    ITem8
377    ITem9
388    ITem10

请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:6)

WITH CTE1
     AS (SELECT *,
                Row_number() OVER (ORDER BY ID) AS RN
         FROM   Table1),
     CTE2
     AS (SELECT *,
                Row_number() OVER (ORDER BY ID) AS RN
         FROM   Table2)
UPDATE CTE2
SET    ItemName = CTE1.ItemName
FROM   CTE2
       JOIN CTE1
         ON CTE1.RN = CTE2.RN 

SQL Fiddle