Mysql
 sql >> Base de données >  >> RDS >> Mysql

Créer si une entrée n'existe pas, sinon mettre à jour ?

De nombreux développeurs exécutent encore une requête pour vérifier si un champ est présent dans une table, puis exécutent une requête d'insertion ou de mise à jour en fonction du résultat de la première requête. Essayez d'utiliser la syntaxe ON DUPLICATE KEY, c'est beaucoup plus rapide et mieux puis exécutant 2 requêtes. Plus d'informations peuvent être trouvées ici

si vous voulez garder la même valeur pour c vous pouvez faire une mise à jour avec la même valeur

la différence entre 'remplacer' et 'sur clé en double' :

si votre table n'a pas de clé primaire ou de clé unique, le remplacement n'a aucun sens.

Vous pouvez également utiliser les VALUES pour éviter d'avoir à spécifier deux fois les valeurs réelles. Par exemple. au lieu de

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

vous pouvez utiliser

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

VALUES(c) sera évalué à la valeur spécifiée précédemment (6).