• ベストアンサー

取り出す行数とオフセット指定

table test (  id integer primary key,  status integer,  name text ) というテーブルがあります。ここでidは連続とは限りません。 これから  SELECT * FROM test WHERE status=1 ORDER BY id で取り出される  行のうち、100番目から300個分だけ取り出したい というクエリをしたいのですが可能でしょうか? 基本的な質問かと思いますがよろしくお願いします。

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

  • ベストアンサー
回答No.2

MySQLのバージョンは何ですか? MySQLでは、LIMIT、OFFSETがサポートされています。 SELECT * FROM test WHERE status=1 ORDER BY id LIMIT 99,300 または SELECT * FROM test WHERE status=1 ORDER BY id LIMIT 300 OFFSET 99

__LINE__
質問者

お礼

バージョンはMySQL5です。 LIMITというものがあることは知らず、 しかし先ほど調べていたら以下のページを見つけ、 少し早とちりしたと感じました。 http://q.hatena.ne.jp/1179121259 ご回答ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

400個取り出して、先頭の100個をプログラムで飛ばすのは駄目ですか?

__LINE__
質問者

お礼

やはり一旦取り出してからという方法しかないでしょうか。 何万件ものデータを分割して表示したい場合に、後ろのページになるほど遅くなってしまう気がしてなりません。

すると、全ての回答が全文表示されます。

関連するQ&A