Sql 逐行更新编号

Sql 逐行更新编号,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一张只有一列的桌子 id -- 1 2 3 5 5 我想将第4行的值更新为4 因此,所需的输出是: id -- 1 2 3 4 5 我怎样才能做到这一点 WITH CTE AS ( SELECT ID, RN = ROW_NUMBER() OVER (ORDER BY ID ASC) FROM dbo.TableName ) UPDATE CTE SET ID = RN WHERE ID <> RN 这将根据订单确定的行号更新所有不正确的ID。表中还有什么?是否

我有一张只有一列的桌子

id -- 1 2 3 5 5 我想将第4行的值更新为4 因此,所需的输出是:

id -- 1 2 3 4 5 我怎样才能做到这一点

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

这将根据订单确定的行号更新所有不正确的ID。

表中还有什么?是否有可以唯一标识要更改的行的内容?该表中没有任何内容。只有一个column@All对不起,我不知道我们可以在更新查询中使用CTE