@rinaz22

Как сделать массовое обновление записей в mysql?

Всем привет! Есть очень большой объем данных. Нужно все это обработать и обновить столбец stat.
Как можно сделать массовое обновление записей в mysql? Чтобы не делать например 100-500 запросов UPDATE, а одним запросом.
Всего параметров stat не так много(около 10).
Пример, если сделать по одному запросу:
UPDATE `data` SET `stat` = '1' WHERE `id` = '123'
UPDATE `data` SET `stat` = '2' WHERE `id` = '321'

Нашел такой код:
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);

Но не могу понять как переделать под свою задачу.
  • Вопрос задан
  • 560 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
WITH `cte` AS (
    SELECT 123 `id`, 1 `stat` UNION ALL
    SELECT 321     , 2        UNION ALL
 -- ...
    SELECT 456     , 8        UNION ALL
    SELECT 789     , 9
)
UPDATE `data`
JOIN   `cte` USING ( `id` )
SET `data`.`stat` = `cte`.`stat`;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы