Condividi
Inserire più valori con una sola update Mysql?
E' possibile con una sola istruzione UPDATE aggiornare più valori delle colonne delle tabelle di database, ad es. io vorrei ottenere un comportamento del genere:
UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;
con una sola istruzione SQL anzichè multiple?
In Corso
2
MySql
28-05-2018
2 Risposte
3135 Visite
0
Risposte ( 2 approvate )
Certo che è possibile farlo, la questione è vecchia e risaputa, in MySQl per aggiornare più dati contemporaneamente con una sola istruzione SQL anzichè l'UPDATE si usa l'INSERT... ON DUPLICATE KEY, ad es. in questo modo:
Il codice è di facile lettura ed interpretazione, spero ti possa essere utile.
Attenzione però che l'uso della INSERT ON DUPLICATE KEY come istruzione per l'aggiornamento dei dati può avere degli effetti collaterali indesiderati, bisogna precisare e ricordare che:
Usare la INSERT ON DUPLICATE KEY per fare un'UPDATE di valori multipli può essere una valida soluzione, ma bisogna essere consapevoli di quello che si sta facendo se non si vogliono avere degli effetti indesiderati, in altri termini si potrebbe usare una variante di questa inserendo le istruzioni 'case / when / then' per controllare le condizioni di applicabilità ad ogni singolo record; inoltre questa variante sebbene l'istruzione sql sia più complessa da scrivere essa risulta due volte più veloce della precedente.
Infine si può aggiungere che è possibile ottenere aggiornamenti multipli dei valori dei records usando le transazioni (TRANSACTION).