我想使用Perl迭代从MySQL数据库返回的记录,但一次只能迭代10条记录。原因是服务器组件每个请求只能处理10个项目。
例如:
如果查询返回35条记录 我必须在4个请求中发送数据:
Request # # of Records -------- -------- 1 10 2 10 3 10 4 5
完成任务的最佳方法是什么?
答案 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
等