想象一下下面的SQL查詢:SQL:與動態列賦值更新語句
UPDATE MYTABLE
SET COL2 = (SELECT COL2 + 1 FROM (SELECT MAX(COL2) FROM MYTABLE) AS X)
WHERE ID IN (1,2,3,4,5)
假設在執行更新之前MAX(COL2)爲1
我的本意是,更新其中ID = 1 COL2被更新爲'max(COL2)+ 1'(即2),並且針對後續更新'MAX(COL2)+1'被重新評估,使得對於ID = 2,COL2 = 3並且ID = 3,COL2 = 4等...
實際情況是,對於所有行(ID = 1,2,3,4,5),COL2的值爲2.
是否有一種智能的方法讓MAX(COL2)+1的值在每次更新時「重新評估」?我意識到這樣做可能會有性能問題,但我很好奇!有沒有更好的選擇(不涉及多個更新語句)?
BTW:櫃面你想知道使用上面的查詢(嵌套的內部表)的語法在這裏看到:SQL : Using the target table in an UPDATE statement in a nested FROM clause
請張貼你現在在桌面上的內容以及你想看到的結果。 – Quassnoi 2009-02-17 12:16:26