2013-08-06 13 views
15

Я пытаюсь установить несколько столбцов для нескольких строк в одном запросе, но пока не повезло.Обновление нескольких столбцов для нескольких строк в одном запросе 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 с несколькими столбцами.

ответ

27

попробовать это

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)** 
+0

Cool..that работал! :) –

+0

приятно :) приветствую! –

+0

Да, sir.SO не позволяет отметить ответ за 5 минут. Отметьте через минуту. :) –

9

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

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) 
Смежные вопросы