MySQL查询问题?

时间:2010-07-01 02:57:03

标签: mysql

假设我在MySQL数据库中显示用户的前10个图像,然后运行第二个查询以显示上次查询中断的其他用户图像。我的第二个查询怎么样?

以下是我在下面的第一个查询的结果。

SELECT *
FROM images
WHERE images.user_id = '$user_id'
LIMIT 0, 10

3 个答案:

答案 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 10LIMIT 10, ∞

但是,虽然你不能要求无限的行,但你可以足够接近。这在另一个问题中讨论:

Mysql Offset Infinite rows