可以使用LIMIT
条款的OFFSET
部分:
LIMIT 2 OFFSET 2;
这将允许你限制的结果开始后,指定的偏移量,在这种情况下 - 在第二行之后。
UPDATE(动态查询?)
要选择/偏移的动态,你需要处理的那部分在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;
更新#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,但它可能最终是同样数量的工作。
你有没有排序的价值? – ntvf
是我按价值排序 – Fady
我编辑了这个问题,这样你就可以明白问题是什么:) – Fady