0

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

例如:

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

请求 ## 的记录
-------- --------
   1 10
   2 10
   3 10
   4 5

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

4

3 回答 3

5

查看 MySQL 的 LIMIT 子句。你可以有这样的查询:

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

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

您当然首先需要对总数进行查询,并计算出您需要运行多少次选择查询才能获得所有结果。

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

于 2009-04-22T16:15:30.527 回答
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 行。

于 2009-04-22T16:16:23.863 回答
0

对于第一页:

SELECT  *
FROM    table1
ORDER BY
        field
LIMIT 0, 10

对于秒页面:

SELECT  *
FROM    table1
ORDER BY
        field
LIMIT 10, 10

等等

于 2009-04-22T16:15:54.270 回答