2

我有一个超过 500 行的表,ID其中有一列名为 datetype INT。目前这些值都是NULL.

我想要实现的是ID用每行的增量数字填充列,比如 1、2、3、4、...、500 等。

请帮助我了解如何通过 SQL 脚本实现此目的。

4

2 回答 2

2

在 CTE 中使用ROW_NUMBER是一种方法,但这是另一种方法;创建一个新id1int 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列。

于 2012-05-18T02:39:55.890 回答
0
#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

祝你好运

于 2012-05-18T02:36:18.040 回答