重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (3件)

togino です。



すみません。ありましたね・・・(汗)

------------------------
LIMIT 句
LIMIT { count | ALL } [ { OFFSET | , } start ]
OFFSET start

count は 返される行の最大数を指定し、
start は 行を返しはじめる前に飛ばす行の数を
指定します。
------------------------
ここにも書いてありますが、ORDER BY と併用するように
と注意書きされております。

# すみませんでした・・・
    • good
    • 0

LIMITとOFFSETじゃだめですか?



select * from table_name order by pkey limit 50 offset 50;

#詳しくはマニュアル参照

参考URL:http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQ …
    • good
    • 0

基本的に、「最初から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 行目を取得しても、
あまりスピードは変わらないのかなぁって思ってます。

いかがでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/07/30 13:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す