web-dev-qa-db-fra.com

Mettre à jour plusieurs colonnes pour plusieurs lignes dans une requête SQL

J'essaie de définir plusieurs colonnes pour plusieurs lignes dans une seule requête, mais jusqu'à présent, pas de chance.

Voici à quoi ressemble ma table

Tableau: utilisateur

enter image description here

Je voudrais définir "ext_id" sur user_id IN (3,4,5) et également définir ext_flag = Y et admin_role = admin sur les mêmes lignes.

le tableau résultant ressemble à ceci enter image description here

Ma requête ressemble à ceci, mais je reçois des erreurs en raison de la méconnaissance de la syntaxe 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

J'ai du mal en syntaxe SET avec plusieurs colonnes.

18
Pankaj Gadge

essaye ça

 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)**
30
echo_Me

Vous pouvez également pirater l'opération d'insertion:

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)
9
camille khalaghi