2009-04-22 82 views
0

我想循环访问使用Perl从MySQL数据库返回的记录,但一次只能记录10条记录。原因是服务器组件每个请求只能处理10个项目。记录集迭代

例如:

如果查询返回的35条记录,然后 我不得不在4个请求发送数据:

 
Request #   # of Records 
--------    -------- 
    1     10 
    2     10 
    3     10 
    4      5 

什么是完成任务的最好方法是什么?

+0

也许你可以更具体。我没有看到任何Perl代码的尝试。 – 2009-04-22 16:40:10

回答

3

您可以调整查询以选择10行:

select * 
from yourtable 
order by idcolumn 
limit 10; 

当遍历行,存储您处理的行的ID。你已经处理了10行之后,获取下一个10:

select * 
from yourtable 
where idcolumn > stored_id 
order by idcolumn 
limit 10; 

继续上次查询,直到它返回不到10行。

5

查看MySQL的LIMIT子句。你可以像查询:

SELECT * from some_table LIMIT 0, 10; 
SELECT * from some_table LIMIT 10, 10; 

等其中限制后的第一个数字是偏移量,第二个数字是记录数。

您当然首先需要对总数进行查询,并计算出您需要运行选择查询来获取所有结果的次数。

或者,在Perl中,您可以使用像DBIx :: Class这样的ORM包,它可以通过一组结果处理分页并自动为您检索它们。

0

第一页:

SELECT * 
FROM table1 
ORDER BY 
     field 
LIMIT 0, 10 

数秒页:

SELECT * 
FROM table1 
ORDER BY 
     field 
LIMIT 10, 10