对不起,标题很难说。
使用PDO,我有一个包含100条记录的数据库。一次选择随机数量的记录,并保存最后使用的ID。每当它抓取随机数量的记录时,它就会从上次从保存的ID开始的地方开始。很容易到目前为止。
我的问题是,如果最后一次使用ID是94(100),记录数是10.我得到下一个6 OK。但是需要在ID 1重新启动并继续循环。
我可以在循环结束时通过确定我在最后一个记录ID并从ID 1开始执行新查询来做到这一点。但它似乎有点笨拙,对更好的方法有什么想法?
要关闭重复的帖子,How to get a random range of 10 records from a database without overlapping the end boundary?是关于获得一个接近结尾的随机子集。
答案 0 :(得分:2)
假设$lastID
是上次使用的ID,$myLimit
是您想要获取的记录数。
$qry = "SELECT id, field_01, field_02
FROM (
SELECT id, field_01, field_02
FROM my_table
WHERE id >= {$lastID}
LIMIT {$myLimit}
UNION
SELECT id, field_01, field_02
FROM my_table
WHERE id < {$lastID}
LIMIT {$myLimit}
) tab
LIMIT {$myLimit}";
此查询的想法是执行以下操作:
希望这有帮助。