Maison >base de données >tutoriel mysql >Comment puis-je effectuer plusieurs mises à jour d'enregistrements dans une seule requête MySQL ?

Comment puis-je effectuer plusieurs mises à jour d'enregistrements dans une seule requête MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-21 20:13:46184parcourir

How Can I Perform Multiple Record Updates in a Single MySQL Query?

Mettre à jour efficacement plusieurs enregistrements MySQL

Bien que la fonctionnalité INSERT multi-lignes de MySQL soit largement connue, sa capacité à mettre à jour plusieurs enregistrements simultanément est souvent négligée. Cette technique améliore considérablement l'efficacité par rapport à l'exécution d'instructions UPDATE individuelles.

Considérez cet exemple de tableau :

<code>Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     3
Row3   3    9     5
Row4   4    16    8</code>

Au lieu de plusieurs instructions UPDATE distinctes comme celles-ci :

<code>UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;</code>

Vous pouvez obtenir le même résultat avec une seule requête plus efficace :

<code>INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);</code>

Cela exploite la clause ON DUPLICATE KEY UPDATE. Si une ligne avec le id spécifié existe déjà, les valeurs Col1 et Col2 correspondantes sont mises à jour. Si la ligne n'existe pas, une nouvelle ligne est insérée. Cette approche est considérablement plus rapide et plus respectueuse des ressources que l'exécution de plusieurs requêtes UPDATE individuelles.

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