Подтвердить что ты не робот

Как массовое обновление данных 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**' ");

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

4b9b3361

Ответ 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);

Ответ 2

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

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

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

Ответ 3

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

ОБНОВЛЕНИЕ a SET fruit = (CASE id WHEN 1 THEN 'apple'                    КОГДА 2 ТОГДА "оранжевый"                    КОГДА 3 ТОГДА "персик"            КОНЕЦ) WHERE id IN (1,2, 3);