如果我运行这样的查询:
insert into table (unique_id, column)
select
(isnull(max(cast(unique_id as int)), 1) + 1 from table) as id,
another_column
from another_table
unique_id字段始终为1,不会递增。有没有办法在插入时有这个增量?
p.s这是我正在做的简单版本,但示例是准确的
编辑:SQL Server 2008
由于
答案 0 :(得分:1)
使用identity(mssql),auto_increment(mysql)或序列(psql / oracle /任何其他适当的DB)。
答案 1 :(得分:1)
对于mssql 2005 +
insert into [table] (unique_id, [column])
select row_number() over (order by another_column) as id,
another_column from another_table
或
insert into [table] (unique_id, [column])
select row_number() over (order by newid()) as id,
another_column from another_table
答案 2 :(得分:1)
查看ROW_NUMBER()
功能。
INSERT INTO [table] (unique_id, [column])
SELECT ROW_NUMBER() OVER ( ORDER BY another_column ) AS id,
another_column
FROM another_table
这是a working example that you can play with。
注意:这并不能确保您使用ROW_NUMBER()
生成的ID在您插入的表格中是唯一的。