結果を一度に1ページずつ取り出したいと思います。私は、ページ番号を(JDBCプリペアドステートメントの)パラメータにしたい。 LIMIT 0, 20
に、ページ1のために、理想的には、これはつながる次のスニペットLIMITを使用してMySQLクエリの結果をページ分割する
SELECT * FROM thread t ORDER BY t.id LIMIT ((? - 1) * 20), 20
を考えてみましょう。私は
SELECT * FROM thread t ORDER BY t.id LIMIT ((1 - 1) * 20), 20
をテストする場合
私は構文エラーを持って聞いています。私はそれが何であるかは分かりませんが、それは単純な数学のことです。それはあなたに教えてくれます。
ERROR 1064(42000):あなたはSQL構文に誤りがあります。 が近くに使用する権利構文についてはMySQLサーバのバージョンに対応していること取扱説明書を確認してください「((1 - 1)* 20)、20」行では1
は、私は私のLIMIT
句と間違って何をしていますどのように修正できますか?
ので、それは '((1-1)* 20)'それは何もなく、定数で構成されていても、定数として評価することはできません?それは奇妙な限界のようだ。私はそれが変数を含んでいないので、定数と見なされたと思った...しかし、少なくとも私は今何をすべきか知っています!ありがとう。 – corsiKa
数学的に言えば、あなたは "定数"((1-1)* 20は常に同じです)を表していますが、パーサの観点からは、MySQLは数式表現解析の気分ではありません:) – Matt
私は問題のコードを 'limit?、20'と置き換え、' pageStart =(page-1)* 20; 'を使って、それは魅力的に機能しました。今すぐ次のバグに:) – corsiKa