Как обновить верхние 100 строк в DB2

Я знаю, что в стандартном SQL вы можете сделать это:

update top (100) table1 set field1 = 1

(ссылка: как я могу обновить 100 лучших записей в sql server)

но это запрещено в DB2. Может ли кто-нибудь посоветовать мне, как достичь того же результата в DB2? Спасибо!

2 ответов


Это dooable, хотя вы не можете получить результаты, которые вы ожидаете...

во-первых,всегда помню что SQL по своей сути ненумерованный. Это означает, что есть ничего подобного как "верхние" строки, Если вы явно не определяете, что вы имеете в виду. В противном случае ваши результаты являются "случайными" (sortof).

независимо от того, это is dooable, предполагая, что у вас есть какой-то уникальный ключ на таблица:

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

Почему вы хотите обновить только 100 строк за раз? Какую проблему ты пытаешься решить?


не могли бы вы использовать RRN (Если вы просто обеспокоены ограничением количества обновлений)?

например:

update mytable a set a.field = 'foo' where RRN(a) < 200