Maison >base de données >tutoriel mysql >Pourquoi ma requête MySQL INSERT échoue-t-elle lors de l'utilisation d'une clause WHERE ?
Dépannage des instructions MySQL INSERT et des clauses WHERE
L'instruction INSERT
de MySQL ne prend pas en charge une clause WHERE
. Tenter d’en utiliser un entraînera une erreur. La clause WHERE
est utilisée pour filtrer les données dans les instructions SELECT
, UPDATE
et DELETE
, et non pour l'insertion.
Examinons un scénario courant :
<code class="language-sql">INSERT INTO Users (weight, desiredWeight) VALUES (160, 145) WHERE id = 1;</code>
Cette requête vise à ajouter une nouvelle ligne uniquement si une ligne avec id = 1
existe, mettant ainsi à jour efficacement cette ligne. C'est une INSERT
utilisation incorrecte.
Approches correctes :
La solution dépend du résultat souhaité :
id
, utilisez :<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145);</code>
UPDATE
:<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
INSERT ... ON DUPLICATE KEY UPDATE
:<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145) ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145;</code>
id
est une colonne à incrémentation automatique, omettez-la de l'instruction INSERT
:<code class="language-sql">INSERT INTO Users (weight, desiredWeight) VALUES (160, 145);</code>
En employant la commande SQL correcte, vous éviterez les erreurs et réaliserez la manipulation des données prévue dans votre base de données MySQL.
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!