2013-08-06 14 views
15

Sto provando a impostare più colonne per più righe in una query, ma finora nessuna fortuna.Aggiornare più colonne per più righe in una query di SQL

Ecco come la mia tabella assomiglia

Tabella: utente

enter image description here

vorrei impostare 'ext_id' sul user_id IN (3,4,5) ed anche come impostare ext_flag = Y e admin_role = admin sulle stesse file.

la tabella risultante si presenta come segue enter image description here

La mia domanda si presenta così, ma io sono sempre erros causa della scarsa familiarità di sintassi 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 

Sono in difficoltà con la sintassi SET con più colonne.

risposta

27

provare questo

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

+0

nice :) you welcome! –

+0

Sì, sir.SO non consente di contrassegnare la risposta in 5 minuti. Segnerà in un minuto. :) –

9

È inoltre possibile hackerare l'operazione di inserimento:

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) 
Problemi correlati