Maison > base de données > tutoriel mysql > le corps du texte

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

Patricia Arquette
Libérer: 2024-11-13 09:58:02
original
571 Les gens l'ont consulté

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 le INSERT... ON DUPLICATE KEY UPDATE syntaxe :

INSERT INTO <table name> (field1, field2, field3, ...) 
VALUES ('value1', 'value2', 'value3', ...)
ON DUPLICATE KEY UPDATE
field1='value1', field2='value2', field3='value3', ...
Copier après la connexion

Explication

Avec cette syntaxe :

  • Si la ligne n'existe pas avec la clé primaire spécifiée (ou l'index unique), elle sera inséré avec les valeurs fournies.
  • Si la ligne existe déjà, les champs spécifiés seront mis à jour avec les 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 affectées sera de 0.

Exemple

La requête suivante démontre le 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'
Copier après la connexion
  • Si school_art_id 1 n'existe pas, il insérera une nouvelle ligne avec les valeurs fournies.
  • Si school_art_id 1 existe déjà, il mettra à jour le baseimage_id , sub_folder et layer aux 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal