• ベストアンサー

PostgreSQLで一定数ずつ行を取得したい

PostgreSQLにおいて、テーブルに記録されている行を、例えば10行ずつ取得したいのですが、どのようなSQL文にしたらよいでしょうか?

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

select * from hoge order by id limit 10 offset 45 これで、45行目から10行分返します。普通は select * from hoge order by id limit 10 offset 0 select * from hoge order by id limit 10 offset 10 select * from hoge order by id limit 10 offset 20 select * from hoge order by id limit 10 offset 30 と言う風にlimitずつoffsetをずらして取得する事でしょう。

okdummy001
質問者

お礼

ご回答ありがとうございます。

okdummy001
質問者

補足

これはテーブルにidという列がないと出来ないということでしょうか。

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

> これはテーブルにidという列がないと出来ないということでしょうか。 う~ん・・・・。私が言いたかったのはoffset句とlimit句であなたが聞きたかった事も多分それだと思うんだけど・・・・。 要するにあなたが書いたSQL(select文)の後ろにlimit句とoffset句をつけることで取得行数と取得開始行を指定する事ができますよという事です。なので、例えば10行ずつ取得するというのが、 limit 10 limit 10 offset 10 limit 10 offset 20 という風に書けば実現できますよっていう事、だよね? ひょっとしてそういう事を聞きたかったんではなかったのかな?

okdummy001
質問者

お礼

ご回答有難うございました。

okdummy001
質問者

補足

なるほど。特に連番用に列を用意しなくても出来るわけですね。

関連するQ&A