Ответ 1
Да, вы можете сделать это, используя этот запрос:
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);
$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**' ");
Есть ли способ упростить его для одного запроса?
Да, вы можете сделать это, используя этот запрос:
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);
Идентификатор должен быть уникальным или первичным ключом. Но не знаю о производительности.
Да, вы можете добиться этого, выполнив это; Надеюсь, что это сработает.
ОБНОВЛЕНИЕ a SET fruit = (CASE id WHEN 1 THEN 'apple' КОГДА 2 ТОГДА "оранжевый" КОГДА 3 ТОГДА "персик" КОНЕЦ) WHERE id IN (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);