Обновите несколько строк в 1 столбце в MySQL - PullRequest
6 голосов
/ 19 февраля 2012

Каков правильный запрос на обновление нескольких строк в MySQL одновременно?

Я обновляю только 1 столбец:

UPDATE example_table SET variable1 = 12 WHERE id=1;
UPDATE example_table SET variable1 = 42 WHERE id=2;
UPDATE example_table SET variable1 = 32 WHERE id=3;
UPDATE example_table SET variable1 = 51 WHERE id=4;

Кажется, что это может быть неэффективно, или если это самый эффективный запрос, дайте мне знать:)

Ответы [ 3 ]

13 голосов
/ 19 февраля 2012

вы можете использовать случаи, как показано ниже:

UPDATE example_table
   SET variable1 = CASE id
                     WHEN 1 THEN 12
                     WHEN 2 THEN 42
                     WHEN 3 THEN 32
                     WHEN 4 THEN 51
                   END
 WHERE id BETWEEN 1 AND 4
2 голосов
/ 19 февраля 2012

Не применимо к вашему примеру, но вы, вероятно, найдете это полезным:

UPDATE table
SET value = <value>
WHERE field = <specific value>

Таким образом, вы можете обновить одно поле в таблице на основе другого поля в той же таблице. Все соответствующие строки будут обновлены. Процитирую пример, который я использовал на работе сегодня утром

UPDATE porderitems
SET currency = -2
WHERE ord = 40396

Этот запрос обновляет таблицу porderitems (строки заказа на покупку), устанавливая валюту -2 для всех строк, связанных с заказом на покупку 40396. Запрос не знает и не заботится о том, сколько строк в этом заказе на покупку; все они будут обновлены.

0 голосов
/ 19 февраля 2012

, если ваши значения взяты из другой таблицы:

UPDATE example_table
JOIN values_table ON values_table.id = example_table.id
SET example_table.variable1 = values_table.value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...