假设我有一张表Customer
name seq
-------------------- -----------
Johnny 1
Jack 3
Jim 4
name
和seq
都是主键。这是我的预期结果
name seq
-------------------- -----------
Johnny 1
Jack 2
Jim 3
知道怎么做到这一点?我尝试使用UPDATE以及ROW_NUMBER,但由于num
是主键列,因此不允许我使用。
注意:新序列必须按seq
排序(不是name
)。
答案 0 :(得分:2)
您可以通过CTE进行更新
Declare @YourTable table (name varchar(25),seq int)
Insert Into @YourTable values
('Johnny',1),
('Jack', 3),
('Jim', 4)
;with cte as (
Select *
,RN = Row_Number() over (Order By Seq)
From @YourTable
)
Update cte Set Seq=RN
Select * from @YourTable
返回
name seq
Johnny 1
Jack 2
Jim 3