13

我知道在标准 SQL 中你可以这样做:

update top (100) table1 set field1 = 1

(参考:如何更新 sql server 中的前 100 条记录

但这在 DB2 中是不允许的。谁能告诉我如何在 DB2 中完成相同的结果?谢谢!

4

2 回答 2

21

这是可行的,虽然你可能不会得到你期望的结果......

首先,永远记住SQL 本质上是UNORDERED。这意味着没有“顶”行之类的东西,除非您明确定义您的意思。否则,您的结果是“随机的”(排序)。

无论如何,这可行的,假设您在桌子上有某种唯一键:

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

为什么一次只想更新 100 行?你真正想解决什么样的问题?

于 2012-06-12T16:08:34.040 回答
2

你可以使用RRN(如果你只是关心限制更新的数量)?

例如:

update mytable a set a.field = 'foo' where RRN(a) < 200
于 2012-06-13T00:00:47.360 回答