2

ID日付タイプの列を持つ500行を超えるテーブルがありますINT。現在、値はすべてNULLです。

私が達成したいのは、ID各行の増分番号、たとえば1、2、3、4、...、500などを列に入力することです。

SQLスクリプトでこれを実現する方法について教えてください。

4

2 に答える 2

2

ROW_NUMBERCTEでの使用は1つの方法ですが、別の方法があります。として新しい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としてドロップして再作成することもできますが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 に答える