2012-03-19 40 views
2

我試圖做的是我有一張表來保存用戶信息(每個用戶一行),並且我每天運行一個php腳本來填寫我得到的信息來自用戶。對於一列表示列A,如果我找到信息我會填寫它,否則我不會觸摸它,因此它仍然是NULL。原因是當信息可能可用時允許它們在下一次更新中更新。MySQL:使用PHP一次選擇一個批次的行

問題是我有太多的行更新,如果我盲目地選擇列A的所有行作爲NULL,那麼結果將不適合內存。如果我一次選擇5000,那麼在下一個SELECT 5000中,我可以得到上一次沒有更新的相同行,這將是一個無限循環...

有沒有人有任何想法如何做這個?我沒有ID列,所以我不能只說SELECT WHERE ID> X ...有沒有解決方案(無論是在MySQL方面還是在PHP方面)而無需修改表格?

+0

所以沒有標準化表。你想更新什麼條件呢? – zod 2012-03-19 20:09:19

+0

請運行'SHOW CREATE TABLE mytable \ G'並將其顯示在問題主體中。 – RolandoMySQLDBA 2012-03-19 20:10:39

+0

有沒有可以訂購和限制的欄目? – keithhatfield 2012-03-19 20:11:42

回答

4

您將要使用LIMIT和OFFSET關鍵字。

SELECT [stuff] LIMIT 5000 OFFSET 5000; 

LIMIT指示要返回的行數,OFFSET指示從表中讀取多遠。

+0

這很有趣,所以我必須在每個循環中手動乘以OFFSET? – 2012-03-19 20:14:12

+0

不一定。您可以在OFFSET中放置一個表達式,例如5000 *頁。 – Raceimaztion 2012-03-19 21:50:39