Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql met à jour plusieurs lignes, chacune avec ses propres valeurs, avec une instruction CASE

Il semble que vous recherchiez quelque chose comme ceci :

UPDATE tbl_accounts
SET nation_id =
     CASE id_account
     WHEN 3 THEN 3331
     WHEN 5 THEN 5551
     ELSE nation_id
     END,
group_id =
     CASE id_account
     WHEN 3 THEN 3332
     WHEN 5 THEN 5552
     ELSE group_id
     END

Mais faire des mises à jour séparées est une solution judicieuse dans cette situation. La requête ci-dessus nécessitera de vérifier chaque ligne du tableau pour voir si elle correspond à la condition. Si vous avez un index sur id_account (et que vous le faites probablement car il semble être la clé primaire), il sera alors très rapide de mettre à jour une seule ligne.

UPDATE tbl_accounts SET nation_id = 3331, groupid = 3332 WHERE id_account = 3
UPDATE tbl_accounts SET nation_id = 5551, groupid = 5552 WHERE id_account = 5