Maison  >  Article  >  base de données  >  Comment mettre à jour ou insérer efficacement des enregistrements dans MySQL en fonction de leur existence ?

Comment mettre à jour ou insérer efficacement des enregistrements dans MySQL en fonction de leur existence ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 13:12:02136parcourir

How to Efficiently Update or Insert Records in MySQL Based on Their Existence?

MySQL : mise à jour ou insertion d'enregistrements basés sur l'existence

Lorsque vous utilisez une base de données, il est courant de rencontrer des scénarios dans lesquels vous devez soit mettre à jour ou insérer des enregistrements en fonction de leur existence. Si vous travaillez avec PHP et MySQL, cette question se pose souvent.

Dans ce contexte, la requête d'origine tente de fusionner les instructions update et insert en utilisant la syntaxe IF EXISTS. Cependant, ce n'est pas l'approche la plus efficace.

Pour obtenir la fonctionnalité souhaitée, vous devez envisager d'utiliser la syntaxe INSERT ... ON DUPLICATE KEY UPDATE. Voici la syntaxe correcte :

INSERT INTO <table> (field1, field2, field3, ...) 
VALUES ('value1', 'value2','value3', ...)
ON DUPLICATE KEY UPDATE
field1='value1', field2='value2', field3='value3', ...

Avec cette syntaxe, vous pouvez effectuer à la fois les opérations INSERT et UPDATE dans une seule requête. Si l'enregistrement n'existe pas (en fonction de la clé primaire ou de l'index unique), il sera inséré. Si l'enregistrement existe déjà, il sera mis à jour avec les valeurs fournies.

Il est important de noter que la valeur des lignes concernées pour chaque ligne sera :

  • 1 si la ligne est inséré en tant que nouvelle ligne.
  • 2 si une ligne existante est mise à jour.
  • 0 si une ligne existante est définie sur sa valeur actuelle valeurs.

Cette approche est plus efficace et plus facile à maintenir que de gérer les opérations de mise à jour et d'insertion séparément.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn