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

Creare se una voce non esiste, altrimenti aggiornare?

Molti sviluppatori eseguono ancora una query per verificare se un campo è presente in una tabella e quindi eseguono una query di inserimento o aggiornamento in base al risultato della prima query. Prova a utilizzare la sintassi SU CHIAVE DUPLICATA, è molto più veloce e migliore quindi eseguire 2 query. Maggiori informazioni sono disponibili qui

se vuoi mantenere lo stesso valore per c puoi fare un aggiornamento con lo stesso valore

la differenza tra "sostituisci" e "su chiave duplicata":

se la tua tabella non ha una chiave primaria o una chiave univoca, la sostituzione non ha alcun senso.

Puoi anche utilizzare i VALUES funzione per evitare di dover specificare due volte i valori effettivi. Per esempio. invece di

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=6;

puoi usare

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);

Dove VALUES(c) valuterà il valore specificato in precedenza (6).