Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql atualiza várias linhas, cada uma com seus próprios valores, com uma instrução CASE


Parece que você está procurando algo assim:
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

Mas fazer atualizações separadas é uma solução sensata nessa situação. A consulta acima exigirá a verificação de cada linha da tabela para ver se ela corresponde à condição. Se você tiver um índice em id_account (e presumivelmente você faz como parece ser a chave primária), será muito rápido atualizar uma única linha.
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