SQL Server - 如何以数字顺序保留SQL int列,没有间隙

问题描述 投票:0回答:1

我有一个列(TaskPosition)跟踪html表中的记录位置。至关重要的是,即使存在删除,此列中的值仍保持数字顺序且没有间隙。

TaskID  TaskName    TaskPosition
1   Project Planning    1
2   Define Requirements 2
3   Develop Options     3
4   Finalise Solution   4

如果我删除TaskPosition = 3的记录,那么我想要TaskPosition列

TaskID  TaskName    TaskPosition
1   Project Planning    1
2   Define Requirements 2
4   Finalise Solution   3
sql sql-server
1个回答
1
投票

ROW_NUMBER() @Damien_The_Unbeliever期间使用SELECT表达式生成整数

create table #noGapInt (TaskID int identity(1,1), TaskName  varchar(10), TaskPosition int)

insert #noGapInt (TaskName , TaskPosition) values ('a',1),('a',2),('a',3),('a',4),('a',5),('a',6)

select * from #noGapInt

delete from #noGapInt where TaskPosition = 4

select * from #noGapInt

select *, ROW_NUMBER() over(order by TaskID) TaskPosition from #noGapInt
© www.soinside.com 2019 - 2024. All rights reserved.