Maison > base de données > tutoriel mysql > Comment mettre à jour les données de manière conditionnelle avec INSERT... ON DUPLICATE KEY UPDATE ?

Comment mettre à jour les données de manière conditionnelle avec INSERT... ON DUPLICATE KEY UPDATE ?

Barbara Streisand
Libérer: 2024-10-29 17:07:02
original
646 Les gens l'ont consulté

How to Update Data Conditionally with INSERT ... ON DUPLICATE KEY UPDATE?

INSERT conditionnel ... SUR MISE À JOUR DE LA CLÉ EN DUPLICATE

Lors de l'utilisation de INSERT ... SUR LA MISE À JOUR DE LA CLÉ EN DUPLICATE, il peut être nécessaire d'appliquer se met à jour sous condition, uniquement lorsqu’une condition spécifique est remplie. Cependant, l'utilisation de WHERE dans la clause UPDATE n'est pas prise en charge.

Solution de contournement avec IF()

Pour surmonter cette limitation, il est possible d'utiliser IF( ) fonction pour évaluer la condition et déterminer si la mise à jour doit être effectuée. La syntaxe suivante illustre cette solution de contournement :

INSERT INTO table_name (column1, column2)
VALUES (value1, value2)
ON DUPLICATE KEY UPDATE
  column2 = IF(condition, new_value, old_value);
Copier après la connexion

Exemple :

Considérez le scénario suivant :

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
  VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
Copier après la connexion

Dans cet exemple, la mise à jour to last_event_id ne se produira que si la valeur de last_event_created_at dans la ligne entrante est ultérieure à la valeur existante dans la base de données. Cela garantit que l'événement le plus récent est enregistré.

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