我有一个超过 500 行的表,ID
其中有一列名为 datetype INT
。目前这些值都是NULL
.
我想要实现的是ID
用每行的增量数字填充列,比如 1、2、3、4、...、500 等。
请帮助我了解如何通过 SQL 脚本实现此目的。
我有一个超过 500 行的表,ID
其中有一列名为 datetype 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
列。
#create one temporary table
CREATE TABLE Tmp
(
ID int NOT NULL
IDENTITY(1, 1),
field(s) datatype NULL
)
#suppose your old table name is tbl,now pull
#Id will be auto-increment here
#dont select Id here as it is Null
INSERT INTO Tmp (field(s) )
SELECT
field(s)
FROM tbl
#drop current table
DROP TABLE tbl
#rename temp table to current one
Exec sp_rename 'Tmp', 'tbl'
#drop your temp table
#write alter command to set identitry to Id of current table
祝你好运