我想使用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