在缺少标识列的现有 table 中进行多次插入
Multiple insert in already existing table with missing identity column
在 SQL 服务器中,我试图将 375 行插入到已经存在的 table 中。
table 没有标识列,但 ID
列是唯一的,我想为每 375 行输入唯一的 ID。我尝试做 max(id)+1
但对于所有 375 行,它插入了相同的 ID 并且数据被弄乱了。我无法更改 id
列,因为 table 有超过百万行。
代码如下:
declare @id int
set @id = select max(id) from tablename;
Insert into tablename (id, column 1, column 2, column 3, ..... column 20)
select @id + 1, column1, column2, column 3, ........, column 20
from tablename1
where column15 IN (1,2,3,4,.........,375)
使用 row_number
.
怎么样?
declare @id int
set @id = (select max(id) from tablename)
Insert into tablename (id, column 1, column 2, column 3, ..... column 20)
select
row_number() over (order by (select null)) + @id,
column1,
column2,
column 3,
........,
column 20
from tablename1
在 SQL 服务器中,我试图将 375 行插入到已经存在的 table 中。
table 没有标识列,但 ID
列是唯一的,我想为每 375 行输入唯一的 ID。我尝试做 max(id)+1
但对于所有 375 行,它插入了相同的 ID 并且数据被弄乱了。我无法更改 id
列,因为 table 有超过百万行。
代码如下:
declare @id int
set @id = select max(id) from tablename;
Insert into tablename (id, column 1, column 2, column 3, ..... column 20)
select @id + 1, column1, column2, column 3, ........, column 20
from tablename1
where column15 IN (1,2,3,4,.........,375)
使用 row_number
.
declare @id int
set @id = (select max(id) from tablename)
Insert into tablename (id, column 1, column 2, column 3, ..... column 20)
select
row_number() over (order by (select null)) + @id,
column1,
column2,
column 3,
........,
column 20
from tablename1