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

Mil*_*cay 2 sql-server-2008

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

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

例如,我有一个表Table1,并Column1与该表列出10项查询(ID不连续).

ID  ItemName
1    Item1
2    Item2
4    Item3
5    Item4
6    Item5
8    Item6
9    Item7
14    Item8
18    Item9
23    Item10
Run Code Online (Sandbox Code Playgroud)

现在,我有另一个表Table2Column2我想和高于10个项目进行更新.

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

ID   ItemName
301    NULL
321    NULL
323    NULL
331    NULL
333    NULL
335    NULL
336    NULL
355    NULL
377    NULL
388    NULL
Run Code Online (Sandbox Code Playgroud)

所以,我正在寻找一个查询,我可以更新Table2Column2使用这10个项目Table1,结果看起来像这样

ID   ItemName
301    ITem1
321    ITem2
323    ITem3
331    ITem4
333    ITem5
335    ITem6
336    ITem7
355    ITem8
377    ITem9
388    ITem10
Run Code Online (Sandbox Code Playgroud)

请帮忙.提前致谢.

Mar*_*ith 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 
Run Code Online (Sandbox Code Playgroud)

SQL小提琴

  • 真的是一个很好的解决方案。它在今天下班前拯救了我的一天......前往一个愉快的周末。非常感谢! (2认同)