Maison >base de données >tutoriel mysql >Comment puis-je INSÉRER ou METTRE À JOUR efficacement une ligne MySQL en fonction de deux conditions ?

Comment puis-je INSÉRER ou METTRE À JOUR efficacement une ligne MySQL en fonction de deux conditions ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 16:43:41629parcourir

How Can I Efficiently INSERT or UPDATE a MySQL Row Based on Two Conditions?

INSERT INTO ou UPDATE avec deux conditions

Description du problème :

L'utilisateur rencontre un défi chronophage : insérer une nouvelle ligne dans un tableau s'il n'existe pas déjà de ligne correspondant à deux conditions spécifiques ("nom" et 'dates'), ou mettre à jour la ligne existante si une correspondance est trouvée.

Solution :

La réponse réside dans INSERT INTO ... ON DUPLICATE KEY UPDATE de MySQL syntaxe. Cette fonctionnalité puissante permet une manipulation efficace des données en insérant une nouvelle ligne si aucune ligne correspondante n'existe ou en mettant à jour la ligne existante si une contrainte de clé unique est violée.

Pour obtenir le comportement souhaité, la table doit avoir une clé unique. défini (une clé composite dans ce cas) pour les deux colonnes (« nom » et « dates »). Cette clé sert d'identifiant pour les lignes uniques du tableau.

Exemple de scénario :

Considérez la structure de tableau suivante :

create table myThing (
    id int auto_increment primary key,
    name int not null,
    values1 int not null,
    values2 int not null,
    dates date not null,
    unique key(name,dates) -- This line is crucial
);

Insertion une nouvelle ligne avec l'instruction suivante créera une nouvelle ligne ou mettra à jour une ligne existante, en fonction de l'existence d'une ligne avec le même « nom » et 'dates' :

insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;

Exemple de résultat :

select * from myThing;
+----+------+---------+---------+------------+
| id | name | values1 | values2 | dates      |
+----+------+---------+---------+------------+
| 1 | 777 | 1 | 4 | 2015-07-11 |
| 2 | 778 | 1 | 1 | 2015-07-11 |
+----+------+---------+---------+------------+

Comme le montre l'exemple, la syntaxe INSERT INTO ... ON DUPLICATE KEY UPDATE gère efficacement les deux Opérations d'insertion et de mise à jour basées sur la clé unique définie, éliminant ainsi le besoin de procédures stockées complexes.

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