作为 Oracle 用户,我经常遇到这个问题,我在玩 MySql。
是以下情况:
- id 列表 (1, 2, 3, ..., n)
- 值列表 ('val1', 'val2', 'val3', ..., 'valn') [这些值显然与这些完全不同]
- 前 2 个列表按顺序传递。这意味着首先传递的值对应于首先传递的id。
目标是更新所有具有相应value
的表:val1 应该更新 id 1,val2 应该更新 id 2 等等......仅在一个查询中。value
id
简单的解决方案是更新 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