Как массовое обновление данных mysql одним запросом?

$query = mysql_query("UPDATE a SET fruit = '**apple**' WHERE id = '**1**' "); $query2 = mysql_query("UPDATE a SET fruit = '**orange**' WHERE id = '**2**' "); $query3 = mysql_query("UPDATE a SET fruit = '**peach**' WHERE id = '**3**' "); 

есть ли способ упростить его для одного запроса?

Solutions Collecting From Web of "Как массовое обновление данных mysql одним запросом?"

Да, вы можете сделать это, используя этот запрос:

 UPDATE a SET fruit = (CASE id WHEN 1 THEN 'apple' WHEN 2 THEN 'orange' WHEN 3 THEN 'peach' END) WHERE id IN(1,2 ,3); 

Я нашел следующее решение:

 INSERT into `table` (id,fruit) VALUES (1,'apple'), (2,'orange'), (3,'peach') ON DUPLICATE KEY UPDATE fruit = VALUES(fruit); 

Идентификатор должен быть уникальным или первичным ключом. Но не знаю о производительности.

Да, вы можете добиться этого, выполнив это; Надеюсь, что это работает.

UPDATE SET SET = (CASE id КОГДА 1 ТОГДА «яблоко» КОГДА 2 ТОГДА «оранжевый» КОГДА 3 ТОГДА «персик» КОНЕЦ) ГДЕ ИД В (1,2, 3);

См. http://blog.bubble.ro/how-to-make-multiple-updates-using-a-single-query-in-mysql/

правильный ответ

 UPDATE a SET fruit = (CASE id WHEN 1 THEN 'apple' WHEN 2 THEN 'orange' WHEN 3 THEN 'peach' ELSE fruit END) WHERE id IN(1,2 ,3);