sql >> Base de Datos >  >> RDS >> Mysql

mysql actualiza varias filas, cada una con sus propios valores, con una declaración CASE

Parece que estás buscando algo como esto:

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

Pero hacer actualizaciones separadas es una solución sensata en esta situación. La consulta anterior requerirá verificar cada fila de la tabla para ver si coincide con la condición. Si tiene un índice en id_account (y presumiblemente lo hace como parece ser la clave principal), será muy rápido actualizar una sola fila.

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