如何在SQL中重新排序INT列中的编号?

时间:2017-04-16 14:33:43

标签: sql sql-server tsql

假设我有一张表Customer

name                 seq
-------------------- -----------
Johnny               1
Jack                 3
Jim                  4

nameseq都是主键。这是我的预期结果

name                 seq
-------------------- -----------
Johnny               1
Jack                 2
Jim                  3

知道怎么做到这一点?我尝试使用UPDATE以及ROW_NUMBER,但由于num是主键列,因此不允许我使用。

注意:新序列必须按seq排序(不是name)。

1 个答案:

答案 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