Обновление нескольких столбцов для нескольких строк в одном запросе SQL

Я пытаюсь установить несколько столбцов для нескольких строк в одном запросе, но до сих пор не повезло.

Вот как выглядит моя таблица

Таблица: пользователь

enter image description here

Я хотел бы установить 'ext_id' в user_id IN (3,4,5), а также хотел бы установить ext_flag = Y и admin_role = admin в тех же строках.

итоговая таблица выглядит следующим образом enter image description here

Мой запрос выглядит так, но я получаю erros из-за незнания синтаксиса SQL.

update user
set ext_flag = 'Y', admin_role = 'admin', ext_id = 
case 
when user_id = 2 then 345
when user_id = 4 then 456
when user_id = 5 then 789
end

Мне сложно в синтаксисе SET с несколькими столбцами.

Ответ 1

попробуйте это

 update user
 set ext_flag = 'Y', admin_role = 'admin', ext_id = 
 case 
 when user_id = 2 then 345
 when user_id = 4 then 456
 when user_id = 5 then 789
 end
 **WHERE user_id  in (2,4,5)**

Ответ 2

Вы также можете взломать операцию вставки:

INSERT INTO mytable (id, a, b, c)
VALUES (1, 'a1', 'b1', 'c1'),
(2, 'a2', 'b2', 'c2'),
(3, 'a3', 'b3', 'c3'),
(4, 'a4', 'b4', 'c4'),
(5, 'a5', 'b5', 'c5'),
(6, 'a6', 'b6', 'c6')
ON DUPLICATE KEY UPDATE id=VALUES(id),
a=VALUES(a),
b=VALUES(b),
c=VALUES(c)