Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在varchar ID字段上大容量插入递增ID_Sql_Sql Server 2008_Bulkinsert - Fatal编程技术网

Sql 在varchar ID字段上大容量插入递增ID

Sql 在varchar ID字段上大容量插入递增ID,sql,sql-server-2008,bulkinsert,Sql,Sql Server 2008,Bulkinsert,如果我运行这样的查询: 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、 这是我正在做的一个简单的版本,但是这个例子是准确的 编辑:SQL Server 2008 感谢

如果我运行这样的查询:

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、 这是我正在做的一个简单的版本,但是这个例子是准确的

编辑:SQL Server 2008

感谢使用标识(mssql)、自动增量(mysql)或序列(psql/oracle/任何其他适当的数据库)。

使用标识(mssql)、自动增量(mysql)或序列(psql/oracle/任何其他适当的数据库)。

适用于mssql 2005+

insert into [table] (unique_id, [column])  
select  row_number() over (order by another_column) as id,  
another_column from another_table 

适用于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 another_column ) AS id,
            another_column
FROM        another_table 
给你

注意:这不能确保使用
行号()生成的ID在插入的表中是唯一的。

查看该函数

INSERT INTO [table] (unique_id, [column])
SELECT      ROW_NUMBER() OVER ( ORDER BY another_column ) AS id,
            another_column
FROM        another_table 
给你



注意:这并不能确保您使用
行号()生成的ID在您插入的表中是唯一的。

我知道我可以使用标识,但我想看看是否可以使用我的SQL?@webnoob我认为您不能用自己的方式来做。
max(unique\u id)
(以及任何其他类似表达式)在插入任何数据之前计算一次。这就是它的工作原理,你不能改变它。我也这么想。谢谢你的澄清。我知道我可以使用identity,但我想看看它是否符合我的SQL?@webnoob我认为你不能用你的方式来做。
max(unique\u id)
(以及任何其他类似表达式)在插入任何数据之前计算一次。这就是它的工作原理,你不能改变它。我也这么想。感谢您的澄清。如果表中已经有ID为的值,会发生什么?我不会以重复的ID结束吗?是的,它肯定会复制ID(或者根据约束生成错误)。好的,看起来我需要使用Identity。谢谢。如果表中已经有ID为的值,会发生什么?我不会以重复的ID结束吗?是的,它肯定会复制ID(或者根据约束生成错误)。好的,看起来我需要使用Identity。谢谢。如果表中已经有ID为的值,会发生什么?如果表中已经有ID为的值,那么会发生什么呢?难道我不会得到重复的ID吗?说真的:只需使用
INT-IDENTITY
列-这将为你节省太多的麻烦和悲伤,这完全不值得。这是一个有10年历史的程序,大约有200个表。虽然我更喜欢,但这是不可能的:)说真的:只需使用
INT-IDENTITY
列-这将为您节省太多的麻烦和悲伤,这完全不值得。这是一个有10年历史的程序,大约有200个表。虽然我更喜欢,但这是不可能的:)