如何从大型数据集中重复检索一定数量的数据?

时间:2009-06-11 21:30:43

标签: mysql

我有一个INVENTORY表。里面有很多东西。当我查询它时,我只想每次检索50个项目,如果用户请求继续获得下一个50项,并重复此过程直到记录结束。我正在使用MySQL数据库。如果可能,如何在纯SQL中执行此操作? 感谢,

2 个答案:

答案 0 :(得分:1)

使用LIMIT

SELECT ... FROM ... LIMIT <offset>, <number>

在您的情况下,<number>将为50,<offset>每个请求将增加50。

答案 1 :(得分:1)

SELECT * FROM Inventory
WHERE whatever
ORDER BY something
LIMIT 50 OFFSET 0

获得前50名;第二次,使用OFFSET 50;第三次,使用OFFSET 100;等等。当然,如果表在请求之间发生变化,则可能会出现问题;如果你确实遇到了这个问题,那么解决它可能代价高昂(强制锁定,制作表格副本或其他令人不快的解决方案 - 没有任何魔力)。

如果您的客户端忘记了上次使用的偏移量,您可以将它存储在一个单独的辅助表中,但它会使SQL复杂化。