テーブル1のレコードを全件取得し、取得したレコードの特定の項目を一件ずつチェックし、テーブル2の値を更新する処理を考えています。
しかし、テーブル1のレコード数が8万件存在するため、一気に全件を取得するのはまずいことになるのではと危惧しています。
そこで、fetch first ~ rows を使用するため、テーブル1に項目を追加し、更新が済んだらその項目にフラグを立てるような処理も考えましたが、
たった一度の処理のためにテーブルに項目を追加するのもどうかなと思っています。
1000件くらいずつ順番に取得できる良い方法があったら教えてください。
よろしくお願い致します。
ちなみにデータベースはDB2を使用しています。
No.1ベストアンサー
- 回答日時:
rownumber() over() を使えばできると思います。
例えば、hogeテーブルの、1件目から1000件目までを取得するには次のようなSQL
SELECT t.cl1,t.rownum FROM (SELECT cl1,rownumber() over (ORDER BY cl2) as rownum FROM hoge) AS t WHERE rownum between 1 and 1000 ORDER BY rownum
1001件目から2000件目までを取得するには次のようなSQL
SELECT t.cl1,t.rownum FROM (SELECT cl1,rownumber() over (ORDER BY cl2) as rownum FROM hoge) AS t WHERE rownum between 1001 and 2000 ORDER BY rownum
・・・というように。
ただし、ここでは cl2 で ORDER BY した結果に番号を振っています。
2回のSQLが思い通りに行くためには ORDER BY した結果が常に同じである必要があると思います。
hogeテーブルの全ての項目で ORDER BY すれば間違いないということになると思います。
返信が遅くなってしまってすみません。
ものすごく複雑なSQLですね。
ROWIDらしきものを作成するということでしょうか。
参考にしてやってみます。
ありがとうございました。
No.3
- 回答日時:
条件にマッチした時だけ「テーブル2の値を更新する」わけですから、その条件で絞り込んだ(SQL文を書いた)方が処理が速いのでは?
返信が遅くなってしまいましてすみません。
おっしゃるとおり条件で絞り込んだ方がいいのですが、理由がありまして全件処理をしなくてはならないのです。
ご意見ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Oracle SQL update方法 2 2022/06/22 14:07
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
何歳が一番楽しかった?
自分の人生を振り返ったとき、何歳のころが一番楽しかったですか? 子供の頃でしょうか、それとも大人になってからでしょうか。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
抽出結果を分割して取得
その他(データベース)
-
sqlで、600行あるテーブルを100行毎に分けてcsvファイルに書き出す方法を教えてください。
SQL Server
-
SQLPLUSで結果を画面に表示しない
Oracle
-
-
4
ORA-01013のエラーについて経験のある方お願いします。
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
列の既定値を取得したい
-
Viewにインデックスは張れ...
-
Data Pump で大量データインポ...
-
CLOB型へのINSERT
-
oracleのimpdpでORA-39166
-
データを削除しても表領域の使...
-
テーブルからのselectにおいて...
-
Access レコードを追加できませ...
-
select insert 句
-
DELETE文でFROM句を省略した場合
-
異なるスキーマからデータを抽...
-
datapumpの実行方法について
-
Accessで、マスター情報を参照...
-
count(1)とcount(*)の違い
-
テーブル名を[]でくくらないと...
-
ORA-00959: 表領域'****'は...
-
ACCESS 複数テーブル・複数フィ...
-
USER_SEGMENTの参照について
-
ストアドやviewなどのエクスポート
-
検索結果の列数を動的に変更したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量データの取得処理について
-
列の既定値を取得したい
-
db2にて数値を3桁文字にて出力...
-
ACCESSのテーブルを毎日定刻に...
-
ACCESSエラー「制限されたデー...
-
SQLite C/C++ でのテーブル数...
-
ACCESS2002のupdateの副問合せ...
-
PL/SQLでテーブル名に変数を使...
-
SQLServerのテーブル定義書(?...
-
テーブルランナー
-
登録する方法
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
異なるスキーマからデータを抽...
-
ORA-00959: 表領域'****'は...
-
CLOB型へのINSERT
-
ACCESS 複数テーブル・複数フィ...
-
postgreSQLのint型は桁数指定が...
-
Access レコードを追加できませ...
-
datapumpの実行方法について
おすすめ情報