ID
日付タイプの列を持つ500行を超えるテーブルがありますINT
。現在、値はすべてNULL
です。
私が達成したいのは、ID
各行の増分番号、たとえば1、2、3、4、...、500などを列に入力することです。
SQLスクリプトでこれを実現する方法について教えてください。
ID
日付タイプの列を持つ500行を超えるテーブルがありますINT
。現在、値はすべてNULL
です。
私が達成したいのは、ID
各行の増分番号、たとえば1、2、3、4、...、500などを列に入力することです。
SQLスクリプトでこれを実現する方法について教えてください。
ROW_NUMBER
CTEでの使用は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
列になります。
#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
幸運を