SQL限制会产生不良结果

时间:2014-09-09 20:36:35

标签: php sql pdo mysqli

我在使用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类的使用中。

有谁知道问题出在哪里?

1 个答案:

答案 0 :(得分: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