• ベストアンサー

任意値を取得について

Oracleで、先頭からではなく、任意の範囲だけレコードを取り出したいが、 limitとoffsetのような方法がありますか。

  • Oracle
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.3

参考URLで各バージョン毎の動作と誤用について詳しく言及されています。

参考URL:
http://otn.oracle.co.jp/cgi-bin/non/msgview_r.cgi?communityid=otn-489965&bbsid=1&no=97577&view=9

その他の回答 (3)

回答No.4

解決策はMZ-80BさんのURLを参考にしていただくとして・・・ ROWNUMは抽出できた行に対して値が設定されます。 抽出できた行に対しROWNUMが1,2,3,4,・・・と振られていくわけです(抽出条件にはROWNUMの条件も当然含みます)。 ANo.2のような書き方の場合、データは抽出されません。 #ちょっと誤解を招く可能性があるため補足しました。 #ちょっとわかりにくいかな(^^; #ただの補足なのでポイント辞退

go991314
質問者

補足

SQL SERVERの場合は SELECT TOP 10 FROM 表; 任意値を取得することができますか、宜しくお願いします。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

惜しいですね。 where rownum between 100 and 200 という感じです。

  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.1

一応 rownum を使えばそれっぽくできますが。

go991314
質問者

補足

Where between ROWNUM >= 数値 and ROWNUM <= 数値 このような書き方ですか。

関連するQ&A

  • 任意値を取得について

    sql serverで、先頭からではなく、任意の範囲だけレコードを取り出したいが、limitとoffsetのような方法がありますか。

  • VBからオラクルの先頭レコードを取得

    VB6をoo4oでオラクルに接続しています。オラクルのテーブルの先頭レコード値や次のレコードの値の取得方法を教えて下さい。フィールドの値を参照して取得するのではなく、ただ単に先頭レコードや次のレコードの値を取得したいです。教えて下さい!

  • 任意の件数の取得

    検索条件にマッチしたレコードのセットのうち、任意の件数、例えば1から100件、101から200件とか、取得する方法というのはありますか? DBはDB2です。 オラクルではあった気がするのですが、DB2は?と思っています。 もっと言うと、実装はHibernateを使用してアクセスしているので、Hibernateでそのような取得方法があるのならそれも教えていただきたいと思っています。 よろしくお願いします。 (ソートして連番ふるviewでも作ればいいのかな…などとも思っています。どうなんでしょ?)

  • レコードを1件のみ取得した後、検索をやめる方法はあるのでしょうか?

    PostgreSQLのデータベースでテーブルから、 "1件のレコードが見つかった時点で、他のレコードを検索するのをやめる" という事はSQLでできるのでしょうか? 【テーブル名 Fruit 】 | id | option | name |  1    2     りんご  2    1     みかん  3    1     メロン  4    1     バナナ  5    4     いちご 上記のようなテーブルから、optionが1のレコードを検索する時、 どのレコードでもいいので、1件見つけた時点で他にも該当のレコードがあるかという検索の処理をしない。 という事はできるのでしょうか? 出来るのであれば、膨大な数のレコードがある場合、検索の時間が減るのでは無いかと思ったのですが・・・ 現在は下記のSQLのように、OFFSETとLIMITを使用して1件のレコードを取得しています。 SELECT      * FROM      Fruit WHERE      option=1 OFFSET 0 LIMIT 1 このやり方であっているのでしょうか? または他の仕方があるのでしょうか? 教えていただきたいです。 宜しくお願いします。

  • 先頭から連続する数値の桁数を取得したい

    oracleの関数で 例)項目 ADATA VARCHAR2(100) このADATAには (1)先頭から数字が8桁で次に文字(スペース含む)が入っているケース (2)先頭から数字が14桁で次に文字(スペース含む)が入っているケース (3)先頭の1バイト目から文字 という3つのパターンがあります。 レコードごとに(1)か(2)か(3)かを判別したいのですが、何かスマートな方法ないでしょうか? ×1文字ずつ数値かどうか比較し、ループする。 ○先頭から数値が何桁続いているか取得し、(1)8 (2)14 (3)0みたいに取得できる関数はないでしょうか? どなたかよい方法ご存知の方、ご教授ください。 以上よろしくお願い致します。

  • 任意の行のselect

    PHP+MySQLでクエリーを実行する際に 「5行目」と「13行目」と「21行目」 のような、任意の行を取得したいと思っています。 LIMIT句で指定をしようとしても 「LIMIT 5,1」(5行目) は分かるのですが、同時に 「LIMIT 13,1」(13行目) と 「LIMIT 21,1」(21行目) を取得する方法は有るのでしょうか?(複数のLIMIT句?)分かる方がいらっしゃいましたら、お教えください。

    • ベストアンサー
    • PHP
  • vlookup関数と入力規則(?)の続きです

    QNo.2539383 http://oshiete1.goo.ne.jp/qa2539383.html で質問させていただき、思ったとおりうまくできました。 しかし、教えていただいた以下の3種類の数式 =($B1>OFFSET(先頭,MATCH($A1,名前,0)-1,1))+($B1<OFFSET(先頭,MATCH($A1,名前,0)-1,2)) =($C1>OFFSET(先頭,MATCH($A1,名前,0)-1,3))+($C1<OFFSET(先頭,MATCH($A1,名前,0)-1,4)) =OR(VLOOKUP($A3,範囲,COLUMN()*2-2)<B3,VLOOKUP($A3,範囲,COLUMN()*2-1)>B3) が、何となくという程度にしか理解できていない為、応用をきかせることができません。 締め切る前に答えていただいた方へ質問させていただくべきだったとは思うのですが、この式が持つ意味の解説・説明をしていただけないでしょうか? また、この質問では別のシートに入力した場合に表示させる方法をお聞きしましたが、同じシートのデータがある範囲から列方向へ大きく離れた表示されないような場所へ入力したら、もっと簡単になるのでしたらその方法が知りたいと思っています。分かり易ければ何通りかの方法を知っておきたいです。 大変申し訳ありません。よろしくお願い致します。

  • データのページ切り替え表示方法を教えてください

    データを複数のページに分けて表示させたいと思っていますが、 「次のページ」「前のページ」がうまく作れないでおります。 SQL文によるクリエ結果の先頭と最後のレコードID(ユニークでIDを振っています)を取得すれば、 次のページなら SELECT * FROM table_name id > [先頭レコードID] LIMIT 10; 前のページなら SELECT * FROM table_name id < [最後レコードID] LIMIT 10; とやればいいのかなと思っていますが、クリエ結果の最初と最後のレコードIDを取得する方法がわかりません。 どうか上記の件、ご教授くださいm(_ _)mペコリ

  • オラクルからレコードを取得

    VBをoo4oでオラクルの接続していますが、オラクルのテーブルをレコードごとにEXCELのシートに出力したいです。 たとえばテーブルのレコード数が5の場合EXCELのsheet1からsheet5に分け出力したいです。 教えて下さい。

  • EmEditorにて行の先頭に任意の文字を挿入する方法

    置換などで任意の文字を変えたりするみたいに行の先頭に任意の文字などを挿入することはできるのでしょうか? たとえば、phpやperlなどでコメントアウトしたい行などがありその行の先頭に'#'を挿入してくれるような方法やプラグインなど・・・ どうかよろしくお願いします。