DB2中的增量更新语句

时间:2014-04-16 10:20:49

标签: sql db2 sql-update

有没有办法以每次我的Update stmt检查max(列)值然后+1并更新记录的方式更新。例如。

UPDATE MyTable
SET NEW_KEY = (SELECT MAX(KEY) + 1 FROM MyTable)
WHERE NEW_RECORD = 0;

所以不要只选择max,然后为所有记录设置max + 1。它通过每次查看最大值在迭代中完成。

1 个答案:

答案 0 :(得分:1)

这可以在一个声明中完成:

UPDATE (SELECT new_key, new_record,
               MAX(key) OVER(ORDER BY key) as minimumKey,
               COUNT() OVER(ORDER BY key ROWS UNBOUNDED PRECEDING) + 1 as offsetKey
        FROM MyTable) MyTable
SET new_key = minimumKey + offsetKey
WHERE new_record = 0;

(未经测试,因为我没有使用LUW实例)
如果有new_record <> 0行,则新密钥序列中会有间隙(我个人认为密钥的实际值并不重要,所以不要担心)。