Оператор пакетного обновления MySQL с разными идентификаторами - PullRequest
3 голосов
/ 21 ноября 2011

Есть ли один SQL-оператор, эквивалентный этим?

UPDATE table_name SET (a = 'something', b='B1') WHERE id=1;
UPDATE table_name SET (a = 'something else', b='B2') WHERE id=2;
UPDATE table_name SET (a = 'another', b='B3') WHERE id=3;

Ответы [ 2 ]

5 голосов
/ 21 ноября 2011

Да, это:

UPDATE table_name
   SET a = CASE WHEN id = 1
                THEN 'something'
                WHEN id = 2
                THEN 'something else'
                WHEN id = 3
                THEN 'another'
           END
 WHERE id IN (1,2,3)
;

но я не уверен, что это то, что вы имеете в виду?

1 голос
/ 02 марта 2016

Если у вас есть большой массив данных для вставки, вы можете использовать конструкцию ON DUPLICATE KEY UPDATE. Это будет работать более эффективно в MySQL.

См. мой ответ здесь для аналогичного вопроса, для примера использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...