現在データベースに入っているデータの中から
あるパラメータに属されているものを50個ずつLIMITで抽出するということをしています。
例)SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 0 , 50
上のSQL文ですときちんと50行表示してくれるのですが
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 101 , 150
とすると100件近く表示されます。
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 151 , 200
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 201 , 251
として50件ずつ上手く抽出したいのですが、どんどん多く抽出されてしまいます。
対処方法を知っているかたおりましたら教えていただければと考えております。
よろしくお願いいたします。
LIMIT句の使い方に誤解があるようです。
LIMIT [オフセット値,] 行数
です。
つまり、50行ずつ得たいなら、
先頭から50行・・・LIMIT 0,50
51行目から50行・・・LIMIT 50,50
101行目から50行・・・LIMIT 100,50
151行目から50行・・・LIMIT 150,50
といった指定になります。
LIMIT句の使い方に誤解があるようです。
LIMIT [オフセット値,] 行数
です。
つまり、50行ずつ得たいなら、
先頭から50行・・・LIMIT 0,50
51行目から50行・・・LIMIT 50,50
101行目から50行・・・LIMIT 100,50
151行目から50行・・・LIMIT 150,50
といった指定になります。
ご回答ありがとうございます。
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 101 , 150
を
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 50 OFFSET 101
に変更してみてください。
※101行目から50行取り出す
順番が分からないので頭から取り出します。
ちゃんと並び変えた方がいいと思いますが・・・
参考
http://www.postgresql.jp/document/pg732doc/user/queries-limit.ht...
ご回答ありがとうございます。
すでに回答者がおりますのでご不要かもしれませんが、
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 100, 50
とすれば 101件目~150件目 の50件が取得可能です。
ご回答ありがとうございます。
対処法もなにも使い方間違ってるだけ。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.7 SELECT 構文
その2つの引数のうち、最初の物は返される最初の行のオフセットを指定し、2つめの物は返される行の最高数を指定します。冒頭の行のオフセットは0です。(1ではありません)
第二引数に指定するのは取得する「行数」。つまりこの場合50固定。
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' ORDER BY DATA1 LIMIT 101 , 50; SELECT DATA1 FROM TABLE WHERE DATA2 = '1' ORDER BY DATA1 LIMIT 151 , 50; SELECT DATA1 FROM TABLE WHERE DATA2 = '1' ORDER BY DATA1 LIMIT 201 , 50;
order by が抜けているのはすでにコメントで指摘されているとおり。
ご回答ありがとうございます。
50件ずつ抽出したいなら下記のようにしなければならない。
SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 1, 50; SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 51, 50; SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 101, 50; SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 151, 50; SELECT DATA1 FROM TABLE WHERE DATA2 = '1' LIMIT 201, 50;
ご回答ありがとうございます。
ご回答ありがとうございます。