按行号更新行

时间:2013-10-17 14:00:23

标签: sql sql-server sql-server-2008 tsql

我的桌子只有一列

id
--
1
2
3
5
5

我想将第4行的值更新为“4” 所以要求的输出是:

id
--
1
2
3
4
5

我怎样才能实现这个目标

1 个答案:

答案 0 :(得分:7)

WITH CTE AS
(
    SELECT ID, RN = ROW_NUMBER() OVER (ORDER BY ID ASC)
    FROM dbo.TableName
)
UPDATE CTE SET ID = RN
WHERE ID <> RN

Demo

这将根据订单确定的行号更新所有“错误”ID。