• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLのLIMITで指定通りに取得できない原因)

MySQLのLIMITで指定通りに取得できない原因

このQ&Aのポイント
  • MySQLのLIMITで指定通りに取得できない原因について調べています。ページ制御で各ページのボタンを押すと、MySQLのLIMITを使用して指定範囲のデータを表示させる仕組みを作りたいと思っています。しかし、SELECT文のLIMITで指定した範囲よりも多いデータが取得される問題が発生しています。具体的には、指定したLIMITのステップが正しくないため、意図しない範囲のデータが表示される状況です。
  • LIMITの指定が正常に機能しない問題には、いくつかの原因が考えられます。まず、データの並び順が正確でない場合、指定した範囲よりも多くのデータが返される可能性があります。また、LIMITの引数を間違えて設定している場合も同様の結果になることがあります。さらに、データベースエンジンの仕様や設定によっても、LIMITの挙動が変わることがあります。
  • LIMITの指定における誤ったステップやデータの並び順の問題は、以下のように解決することができます。まず、データの並び順を明確に指定し、正確な範囲のデータを取得するようにします。また、LIMITの引数を適切に設定して、取得するデータの範囲を正確に指定します。さらに、データベースエンジンの仕様や設定についても確認し、正確な挙動を把握することが重要です。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

mysql_php_sample.php > $limit_end = (($page-1)*$kensuu)+$kensuu-1; 以下のようにしてみるとか: $limit_end = 3;

参考URL:
http://dev.mysql.com/doc/refman/5.6/en/select.html
kiseki777
質問者

お礼

Limit 開始位置,終了位置 ではなく Limit 開始位置,表示数 だったのですね。 勘違いしていました。ありがとうございます。 $limit_end = (($page-1)*$kensuu)+$kensuu-1; を $limit_end = $kensuu; にして無事にできました。

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

(ANo.1の方と同じですが)とりあえずMySQLのマニュアルくらいは読みましょう http://dev.mysql.com/doc/refman/5.1/ja/select.html ----- 引用ここから LIMIT 条項は SELECT ステートメントに返された行数を制限するのに利用する事ができます。LIMIT は、負数以外の整数定数でなければいけない、1つか2つの数値引数を取ります。(準備されたステートメントを利用している時以外) その2つの引数のうち、最初の物は返される最初の行のオフセットを指定し、2つめの物は返される行の最高数を指定します。冒頭の行のオフセットは0です。(1ではありません) ----- 引用ここまで あと、こういうSQL文でorder byがないのは不思議な気がします。データベースからの読み込みで「何かの順番にデータが返される」という保証はありません。

kiseki777
質問者

お礼

無事に解決することができました。 マニュアルを丁寧に読む癖をつけます。 ご指摘ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

LIMIT 0,2→ 0行目(実質1行目)から2つ取り出す =id1~id2:2行分取得 LIMIT 3,5→ 3行目(実質4行目)から5つ取り出す =id4~id8:5行分取得 LIMIT 6,8→ 6行目(実質7行目)から8つ取り出す =id7~id14:8行分取得

kiseki777
質問者

お礼

分かりやすいアドバイス、ありがとうございます。参考になりました。

関連するQ&A

専門家に質問してみよう