记录集迭代

时间:2009-04-22 16:04:10

标签: mysql perl iteration recordset

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

例如:

  

如果查询返回35条记录   我必须在4个请求中发送数据:

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

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

3 个答案:

答案 0 :(得分:5)

查看MySQL的LIMIT子句。您可以进行如下查询:

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

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

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

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

答案 1 :(得分: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行。

答案 2 :(得分:0)

第一页:

SELECT  *
FROM    table1
ORDER BY
        field
LIMIT 0, 10

对于秒页:

SELECT  *
FROM    table1
ORDER BY
        field
LIMIT 10, 10