• ベストアンサー

検索後のレコード選択について

OSは、WINDOWS2000 PostgreSQL+PHP4を使用しています。 レコードの選択条件として、選択レコードの始めの50件、51件~100件のように件数指定で取得することはできるのでしょうか? 始めの50件ですと、TOP 50(SQL Serverだったか、ACCESS?)のような感じで取得できるような気がするのですが、51件~100件といった指定方法はあるのでしょうか? ご存知の方がいらっしゃいましたら、ご教授ねがいます。

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

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.3

togino です。 すみません。ありましたね・・・(汗) ------------------------ LIMIT 句 LIMIT { count | ALL } [ { OFFSET | , } start ] OFFSET start count は 返される行の最大数を指定し、 start は 行を返しはじめる前に飛ばす行の数を 指定します。 ------------------------ ここにも書いてありますが、ORDER BY と併用するように と注意書きされております。 # すみませんでした・・・

その他の回答 (2)

  • zebedeer
  • ベストアンサー率66% (80/121)
回答No.2

LIMITとOFFSETじゃだめですか? select * from table_name order by pkey limit 50 offset 50; #詳しくはマニュアル参照

参考URL:
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/queries-limit.html
  • togino
  • ベストアンサー率75% (97/129)
回答No.1

基本的に、「最初から51件~100件を選択」って 指定はなかったように思います。 # 存在しましたらご指摘お願いします。 Microsoft の ADO::Recordset などでは、1ページの 行数を設定して、「3ページ目を取得」みたいな ことを実現できたと思いますが、結局のところ、 それって $result = pg_query($conn, "SELECT * FROM table"); for($i = 51; $i <= 100; $i++){  $rows[] = pg_fetch_array($result, $i); } と同じ事ではないのかなぁと認識しております。 たぶん、SQL の段階で絞りたいということなので パフォーマンスの事を気にしてらっしゃると思いますが 仮に1万件のレコードがあるテーブルから、条件を つけずに SELECT して、カーソルを使って、 上記のように、51~100 行目を取得しても、 あまりスピードは変わらないのかなぁって思ってます。 いかがでしょう?

boofuu
質問者

お礼

みなさんありがとうございました。 おかげで解決いたしました。 m(__)m