假设我在MySQL数据库中显示用户的前10个图像,然后运行第二个查询以显示上次查询中断的其他用户图像。我的第二个查询怎么样?
以下是我在下面的第一个查询的结果。
SELECT *
FROM images
WHERE images.user_id = '$user_id'
LIMIT 0, 10
答案 0 :(得分:1)
看看OFFSET
关键字(谷歌搜索“mysql偏移”让我有足够的文档)。不完全可移植,但如果你知道你使用的是MySQL / PostGreSQL,那应该没问题。
另一种(可能更好)的方式:
SELECT * FROM images WHERE images.user_id = '$user_id' AND someprimarykey NOT IN ( ...first query, only selecting someprimarykey...)
当然,如果你有一个表的自动递增主键(这通常是一个好主意),AND
只会变成AND primarykey > '$highest_p_key_from_first_call'
,我怀疑你可以暂时存储在某个地方。第一次打电话。
答案 1 :(得分:0)
最简单的解决方案是
SELECT *
FROM images
WHERE images.user_id = '$user_id'
LIMIT 11, 20
(请记住,如果数据库在不同呼叫之间发生变化,您可能会错过一行或以这种方式获得重复)
答案 2 :(得分:0)
您实际上希望使用OFFSET 10
再次运行相同的查询,但不指定限制。不幸的是,无法指定没有限制的偏移量。也无法指定无穷大的限制,例如LIMIT ∞ OFFSET 10
或LIMIT 10, ∞
。
但是,虽然你不能要求无限的行,但你可以足够接近。这在另一个问题中讨论: