Mysql
 sql >> Database >  >> RDS >> Mysql

mysql aggiorna più righe, ciascuna con i propri valori, con un'istruzione CASE

Sembra che tu stia cercando qualcosa del genere:

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

Ma fare aggiornamenti separati è una soluzione sensata in questa situazione. La query precedente richiederà il controllo di ogni riga della tabella per vedere se corrisponde alla condizione. Se hai un indice su id_account (e presumibilmente fai come sembra essere la chiave primaria), sarà molto veloce aggiornare una singola riga.

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