Maison >base de données >tutoriel mysql >Pourquoi ma requête MySQL INSERT échoue-t-elle lors de l'utilisation d'une clause WHERE ?

Pourquoi ma requête MySQL INSERT échoue-t-elle lors de l'utilisation d'une clause WHERE ?

DDD
DDDoriginal
2025-01-19 06:52:12933parcourir

Why Does My MySQL INSERT Query Fail When Using a WHERE Clause?

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é :

  • Ajout d'une nouvelle ligne : Pour insérer une nouvelle ligne, comprenant un id, utilisez :
<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145);</code>
  • Modifier une ligne existante : Pour mettre à jour une ligne existante, utilisez UPDATE:
<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
  • Insérer ou mettre à jour (Conditionnel) : Pour insérer une nouvelle ligne ou mettre à jour une ligne existante en fonction d'une clé unique, utilisez 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 à incrémentation automatique : Si 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!

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