2012-03-19 12 views
2

私がしようとするのは、ユーザ情報(各ユーザごとに1行)を保持するテーブルがあり、毎日PHPスクリプトを実行して、ユーザーから。ある列の列Aの場合は、情報を見つけたら入力します。それ以外の場合はそれに触れませんので、NULLのままです。その理由は、情報が利用可能になる可能性があるときに、次回の更新時にそれらを更新できるようにするためです。MySQL:PHPを使用して一度に1行ずつバッチを選択する

問題は、盲目的に列Aを持つすべての行をNULLとして選択して結果がメモリに収まらない場合、更新するには行が多すぎることです。私は一度に5000を選択すると、次のSELECT 5000では、前回更新されなかった同じ行を得ることができました。無限ループになります...

どのようにこれを行う? ID列がないので、SELECT WHERE ID> Xと言うことはできません。テーブルを変更せずに(MySQL側かPHP側のどちらかに)解決策がありますか?

+0

正規化されていないテーブルです。あなたはどのような状態で更新したいですか? – zod

+0

'SHOW CREATE TABLE mytable \ G'を実行して質問本体に表示してください。 – RolandoMySQLDBA

+0

注文して制限できる列はありますか? – keithhatfield

答えて

4

LIMITおよびOFFSETキーワードを使用します。

SELECT [stuff] LIMIT 5000 OFFSET 5000; 

LIMITは、戻される行数を示し、OFFSETは、表の読み込み距離を示します。

+0

これは面白いので、手動でループごとにOFFSETを掛けなければなりませんか? –

+0

必ずしもそうではありません。 5000 * pageのように、OFFSETに式を入れることができます。 – Raceimaztion

関連する問題