Maison >base de données >tutoriel mysql >Comment puis-je INSÉRER ou METTRE À JOUR efficacement une ligne MySQL en fonction de deux 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!