2009-04-22 108 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