我有一个超过 500 行的表,其中有一列名为 ID
,其日期类型为 INT
。目前这些值都是NULL
。
我想要实现的是用每行的增量数字填充 ID
列,例如 1、2、3、4、...、500 等。
请帮助我了解如何通过 SQL 脚本实现此目的。
最佳答案
在 CTE 中使用 ROW_NUMBER
是一种方法,但这里有另一种方法;创建一个新的 id1
列作为 int Identity(1,1)
,然后复制到 id,然后删除 id1:
-- sample table
create table myTable(id int, value varchar(100));
-- populate 10 rows with just the value column
insert into myTable(value)
select top 10 'some data'
from sys.messages;
go
-- now populate id with sequential integers
alter table myTable add id1 int identity(1,1)
go
update myTable set id=id1;
go
alter table myTable drop column id1;
go
select * from myTable
结果:
id value
----------- -------------
1 some data
2 some data
3 some data
4 some data
5 some data
6 some data
7 some data
8 some data
9 some data
10 some data
虽然您也可以删除并重新创建 ID
作为身份,但它会丢失其序号位置,因此会丢失临时 id1
列。
关于sql - 在 SQL Server 中循环遍历行并自动为每一行添加一个列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645879/