我想使用INSERT INTO从表中复制一些行的SQL查询,但我想要一个字段(这不是主键)有一个新的,独特的,int(我知道这是可怕的数据库设计,但我不能改变数据库的结构)。插入一个唯一的int到非主键字段
这里是什么,我试图做一个简单的例子:
INSERT INTO Mytable
(field1
,field2
,field3
,nonKeyUniqueInt)
SELECT
(field1
,field2
,field3
,(SELECT MAX(nonKeyUniqueInt)+1 FROM mytable)
FROM
mytable
WHERE
(conditions)
然而,这并不工作,因为SELECT MAX查询只运行一次,给我的所有新行了,同样的价值领域。鉴于以下行来复制:
field1field2field3nonKeyUniqueInt x y z 1 a b c 2
我得到的输出:
field1field2field3nonKeyUniqueInt x y z 1 a b c 2 x y z 3 a b c 3
正是我试图做可能吗?
注意:'SELECT MAX(...)+ n'通常不会很好地表现出并发性。怎么样像['SEQUENCE'](http://msdn.microsoft.com/en-us/library/ff878091.aspx)?或者你不想维护一个全局对象? – 2014-11-05 13:23:51
@ Clockwork-Muse你可能是对的,但它基本上是一次性的查询,我想以最简单的方式来完成。 – Slappywag 2014-11-05 14:14:10