Maison >base de données >tutoriel mysql >Comment mettre à jour ou insérer des lignes dans MySQL en fonction de la présence du champ ?

Comment mettre à jour ou insérer des lignes dans MySQL en fonction de la présence du champ ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 09:58:02636parcourir

How to Update or Insert Rows in MySQL Based on Field Presence?

MySQL : mise à jour ou insertion en fonction de la présence du champ

Énoncé du problème

Dans votre code, vous souhaitez mettre à jour les lignes de la table set_colors s'ils existent déjà. Sinon, insérez de nouvelles lignes. Cependant, vous utilisez le conditionnel IF EXISTS dans la requête, ce qui ne correspond pas à la manière préférée de gérer de tels scénarios.

Solution

Pour effectuer la mise à jour ou l'opération d'insertion souhaitée en fonction sur la présence sur le terrain, pensez à utiliser la syntaxe INSERT ... ON DUPLICATE KEY UPDATE :

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

Explication

Avec cette syntaxe :

  • Si la ligne ne n'existe pas avec la clé primaire (ou l'index unique) spécifié, elle sera insérée avec les valeurs fournies.
  • Si la ligne existe déjà, les champs spécifiés seront mis à jour aux valeurs fournies.
  • Si la ligne existe et que les valeurs fournies sont identiques à celles actuelles, aucune action ne sera entreprise et le nombre de lignes concernées sera de 0.

Exemple

La requête suivante démontre l'utilisation :

INSERT INTO set_colors (school_art_id, baseimage_id, sub_folder, layer)
VALUES ('1', '2', 'test-folder', '10')
ON DUPLICATE KEY UPDATE
baseimage_id='2',
sub_folder='updated-folder',
layer='15'
  • Si school_art_id 1 n'existe pas, elle insérera une nouvelle ligne avec les valeurs fournies.
  • Si school_art_id 1 existe déjà, il mettra à jour les champs baseimage_id, sub_folder et layer avec les valeurs fournies.

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