sql-server – 如何为表示记录号的表中的每一行分配一个数字?

如何以添加新记录的方式显示表中的行数,表示该行的数字越高,删除记录时,数字会相应更新?
为了更清楚,假设我有一个这样的简单表:

ID int (primary key) Name varchar(5)

ID被设置为自己递增(使用身份规范),因此它不能表示行(记录)的数量,因为如果我有例如3条记录:

ID NAME
1 Alex
2 Scott
3 Sara

删除Alex和Scott添加一条新记录:

3 Sara
4 Mina

所以基本上我正在寻找一个用于执行此操作的sql解决方案,以便我不会在多个位置更改源代码中的任何其他内容.

我试着写一些东西来完成工作,但它很糟糕.这里是 :

SELECT        COUNT(*) AS [row number],Name
FROM          dbo.Test
GROUP BY ID,Name
HAVING        (ID = ID)

显示为:

row number            Name
1                     Alex
1                     Scott
1                     Sara

虽然我希望它显示为:

row number            Name
1                     Alex
2                     Scott
3                     Sara

解决方法

如果您只是想在选择数据时而不是在数据库中对行进行编号,那么您可以使用它
select row_number() over(order by id) from dbo.Test

这将给出第n行的行号n.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...