如何在DB2中更新前100行

20 浏览
0 Comments

如何在DB2中更新前100行

我知道在标准的SQL中可以这样做:\n

update top (100) table1 set field1 = 1

\n(参考:how can I Update top 100 records in sql server)\n但是在DB2中是不允许这样做的。有人可以告诉我如何在DB2中实现相同的结果吗?谢谢!

0
0 Comments

问题的出现原因:RRN()函数在处理插入和删除的行时可能会更新错误的行。

解决方法:不建议使用RRN()函数来更新前100行。

0
0 Comments

如何在DB2中更新前100行

问题原因:

- SQL是无序的,所以没有所谓的“top”行,除非明确定义。

解决方法:

- 确保表上有某种唯一键。

- 使用以下SQL语句更新前100行:

UPDATE table1 SET field1 = 1
WHERE table1Key IN (SELECT table1Key
                    FROM table1
                    WHERE field1 <> 1
                    ORDER BY field1
                    FETCH FIRST 100 ROWS ONLY)

- 为什么要每次只更新100行?你真正想解决什么问题?

- 如果行没有唯一标识符,可以根据提供的示例找到类似的解决方案。不过,100只是一个限制,用来避免在表中有成千上万条记录时获取整个表。我有一个在JEE服务器上运行的定期进程,跨多个实例检查此表中的记录,每次获取100条记录并将其处理到另一个位置。我想通过批量ID标记前100条,然后选择它们,循环处理,最后根据批量ID删除。

- 另一种更简洁的方法是:

UPDATE (SELECT table1Key FROM table1 WHERE field1 <> 1 ORDER BY field1 FETCH FIRST 100 ROWS ONLY) SET field1 = 1

0