2013-08-06 10 views
15

Próbuję ustawić wiele kolumn dla wielu wierszy w jednym zapytaniu, ale jak dotąd nie ma szczęścia.Aktualizacja wielu kolumn dla wielu wierszy w jednym zapytaniu SQL

Oto jak wygląda mój stół

Tabela: użytkownik

enter image description here

Chciałbym ustawić 'ext_id' na user_id IN (3,4,5), a także ustawić ext_flag = Y i admin_role = admin w tych samych wierszach.

wynikowa tabela wygląda następująco enter image description here

Moje zapytanie wygląda tak, ale jestem coraz erros powodu nieznajomości składni 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 

Mam trudny czas w składni SET z wieloma kolumnami.

Odpowiedz

27

spróbować

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 pracował! :) –

+0

miło :) witamy! –

+0

Tak, sir.SO nie pozwala zaznaczyć odpowiedzi w ciągu 5 minut. Oznaczę za minutę. :) –

9

Można również włamać operacji insert:

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)