Maison >base de données >tutoriel mysql >MySQL peut-il mettre à jour plusieurs lignes dans une seule requête ?
L'instruction INSERT
de MySQL permet d'insérer simultanément plusieurs lignes de données. Mais puis-je mettre à jour plusieurs lignes avec une seule requête ?
Oui, vous pouvez utiliser l'instruction INSERT ... ON DUPLICATE KEY UPDATE
pour mettre à jour plusieurs lignes à la fois. Lorsqu'une ligne est insérée dans une table et qu'une clé primaire ou unique existe déjà, ce qui suit se produit :
INSERT
contient une clause DUPLICATE KEY UPDATE
, alors la ligne existante est mise à jour en utilisant la valeur fournie dans la clause de mise à jour. INSERT
ne contient pas de clause DUPLICATE KEY UPDATE
, une erreur est générée. Considérez la forme suivante :
Name | id | Col1 | Col2 |
---|---|---|---|
Row1 | 1 | 6 | 1 |
Row2 | 2 | 2 | 3 |
Row3 | 3 | 9 | 5 |
Row4 | 4 | 16 | 8 |
Nous souhaitons combiner les mises à jour suivantes en une seule requête :
<code class="language-sql">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>
La requête de mise à jour par lots correspondante utilisant INSERT ... ON DUPLICATE KEY UPDATE
est la suivante :
<code class="language-sql">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>
Cette requête insère une nouvelle ligne si elle n'existe pas déjà, ou met à jour une ligne existante si la clé primaire existe déjà dans la table.
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!