MySQL: Modificare più record con una sola query

Spesso mi sono trovato a dover modificare molte righe di una tabella, ognuna con valori differenti, e non avevo altro modo se non fare un ciclo di singole query update.

UPDATE table SET campo = nuovoValore1 WHERE id = idRiga1
UPDATE table SET campo = nuovoValore2 WHERE id = idRiga2
UPDATE table SET campo = nuovoValore3 WHERE id = idRiga3
...

Poi per fortuna ho scoperto una piccola estensione fatta da mysql all’sql : la clausola on duplicate key update.

INSERT INTO table (id, campo) 
   VALUES(idRiga1, nuovoValore1), (idRiga2, nuovoValore2), (idRiga3, nuovoValore3) 
   ON DUPLICATE KEY UPDATE campo=VALUES(campo)

Così facendo con un unica query si possono modificare molte righe in maniera mirata.
Chiaramente funziona solo se tra i campi c’è una chiave primaria e esiste già un record con tale chiave;  se la chiave primaria non è duplicata inserirà una nuova riga.

Per qualsiasi dubbio guardare le reference.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Leave a Reply

Your email address will not be published. Required fields are marked *