13

私は、標準SQLでこれを実行できることを知っています。

update top (100) table1 set field1 = 1

(参照:SQLサーバーの上位100レコードを更新するにはどうすればよいですか)

ただし、これはDB2では許可されていません。DB2で同じ結果を達成する方法について誰かが私にアドバイスできますか?ありがとう!

4

2 に答える 2

21

これは実行可能ですが、期待する結果が得られない場合があります...

まず、SQLは本質的に順序付けされていないことを常に覚えておいてください。これは、意味を明示的に定義しない限り、「一番上の」行のようなものがないことを意味します。それ以外の場合、結果は「ランダム」(一種)になります。

とにかく、これ実行可能であり、テーブルにある種の一意のキーがあることを前提としています。

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 に答える