0

id顧客による使用状況を追跡するテーブルがあり、列と列を持つ単純化された構造voice_activityです。idはインデックスであり、使用状況が最後にいつ表示されたかを示すvoice_activity日付が必要です。MM-DD-YYYY

正常に動作している大きなログ ファイル (最大 20 万行の CSV) を処理する必要があります。問題はactivityフィールドを効率的に更新することです。現在、次のような単一のクエリを作成するだけで機能します。

UPDATE users SET voice_activity = '09-24-2013' WHERE id = 1 OR id = 2 OR id = 3

などなど。ログファイルが時系列で追加されていれば、これは正常に機能します。前日のログ ファイルが新しいログ ファイルの後に追加された場合、SQL クエリは新しい日付を上書きします。そのため、クエリでは、フィールドvoice_activityが挿入しようとしている日付よりも大きいかどうかを考慮に入れる必要があり、大きい場合は気にしないでください。

これは経由で可能であることは理解してCASEいますが、構文がわかりません。この方法が不可能な場合、このテーブルを更新する他の効率的な方法はありますか? 溶けてしまうので、ループで SQL を更新したくありません。

4

3 に答える 3

1
UPDATE users SET voice_activity = '09-24-2013' WHERE id in(1,2,3) and voice_activity >'09-24-2013'

また

UPDATE users SET voice_activity = '09-24-2013' WHERE (id=1 or id=2 or id=3)  and voice_activity >'09-24-2013'
于 2013-09-24T12:42:22.670 に答える