-1

SQL LIMIT ステートメントの使用に問題があります。データベースに 21 のレコードが保存されており、結果を部分的に取得したいと考えています。私はこのクエリを書きました:

SELECT * FROM table JOIN another_table ON XXX = YYY WHERE XXX = ? ORDER BY col DESC LIMIT ?, ?

この値を使用したときに得られる行数は次のとおりです。

LIMIT:  0 .. 10  --->  num of rows 10     -> Correct
LIMIT: 10 .. 20  --->  num of rows 11     -> Incorrect
LIMIT: 20 .. 30  --->  num of rows 0      -> Incorrect

コードはphp関数で使用され、データベース操作にはPDOStatementクラスを使用しますが、このエラーはMySQLiクラスの使用でも明らかになります.

問題がどこにあるか誰か知っていますか?

4

1 に答える 1

5

あなたが言う時:

LIMIT X, Y

あなたが言ってXいるのはオフセットでYあり、カウントです。あなたが望むものは:

LIMIT 0, 10
LIMIT 10, 10
LIMIT 20, 10

または、OFFSETキーワードを使用して次を使用します。

LIMIT 10 OFFSET 0
LIMIT 10 OFFSET 10
LIMIT 10 OFFSET 20
于 2014-09-09T20:40:25.570 に答える