您可以使用子句的OFFSET
部分:LIMIT
LIMIT 2 OFFSET 2;
这将允许您限制在指定偏移量之后开始的结果,在这种情况下 - 在第二行之后。
更新(动态查询?)
要使选择/偏移动态,您需要在 PHP 中处理该部分。我假设你正在拉记录,用它们做点什么,然后拉下一组?如果这是正确的,你可以只保留一个计数器来记录你已经完成了多少次迭代:
$offsetCounter = 0;
// start your loop, based on whatever you need (for, while, etc.)
$limit = 'LIMIT 2 OFFSET ' . (2 * $offsetCounter++);
// append `$limit` to the end of your query
$query = 'SELECT ID, value FROM yourTable ORDER BY value DESC ' . $limit;
UPDATE #2(动态查询,没有OFFSET
)
如果你不能使用OFFSET
,或者至少一个计数器来实现它,但是你可以使用检索到的最后一条记录的 ID,你可以将它添加到你的WHERE
子句中(我也建议排序在这种情况下也通过 ID 字段)。
像下面这样的东西应该可以工作(如有必要,更新以使用准备好的语句):
$lastIdSelected = 0;
// start your loop
$query = 'SELECT ID, value FROM yourTable';
$query .= (($lastIdSelected != 0) ? ' WHERE id > ' . $lastIdSelected : '');
$query .= ' ORDER BY value DESC, id ASC LIMIT 2';
// execute query, do your work, etc.
// on your last record, do:
$lastIdSelected = $row['ID'];
当然,这也遵循我第一次使用OFFSET
变量更新的格式。您可以将其修改为不使用临时变量来存储最后一个 ID,但无论哪种方式,它最终的工作量都可能相同。