Oracle ユーザーとして、MySql をいじって、この問題に頻繁に直面しています。
次の状況になります。
- ID のリスト (1、2、3、...、n)
- 値のリスト ('val1', 'val2', 'val3', ..., 'valn') [値は明らかにこれらとはまったく異なります]
- 前の 2 つのリストは順番に渡されます。これは、最初に渡された値が最初に渡された id に対応することを意味します。
目的は、対応するすべてのvalue
テーブルvalue
を更新することid
です: val1 は id 1 を更新する必要があり、val2 は id 2 を更新する必要があります... 1 つのクエリのみで。
簡単な解決策は、n 回更新することです。
UPDATE `value` SET `value`='val1' WHERE id = 1;
UPDATE `value` SET `value`='val2' WHERE id = 2;
UPDATE `value` SET `value`='val3' WHERE id = 3;
...
UPDATE `value` SET `value`='valn' WHERE id = n;
しかし、これをすべて一括更新したいと思います。
少し遊ぶためのsqlfiddle:http://sqlfiddle.com/#!2/d02e8