Maison > base de données > tutoriel mysql > Pourquoi les requêtes INSERT échouent-elles avec une clause WHERE dans MySQL ?

Pourquoi les requêtes INSERT échouent-elles avec une clause WHERE dans MySQL ?

DDD
Libérer: 2025-01-19 06:40:10
original
966 Les gens l'ont consulté

Why Do INSERT Queries Fail with a WHERE Clause in MySQL?

Instructions MySQL INSERT et clause WHERE : un piège courant

L'utilisation d'une clause WHERE dans une instruction MySQL INSERT entraîne une erreur. En effet, la clause WHERE est spécifiquement conçue pour les opérations UPDATE et DELETE, et non pour les INSERT.

La requête fournie vise probablement soit à ajouter un nouvel utilisateur, soit à modifier un utilisateur existant. Clarifions les deux scénarios :

Ajout d'un nouvel utilisateur

Pour insérer un nouvel utilisateur avec l'ID 1, la syntaxe MySQL correcte est :

<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145);</code>
Copier après la connexion

Cela attribue directement des valeurs à id, weight et desiredWeight, créant ainsi un nouvel enregistrement utilisateur.

Modifier un utilisateur existant

Si l'objectif est de mettre à jour un utilisateur existant, utilisez l'instruction UPDATE :

<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
Copier après la connexion

Cela modifie le weight et le desiredWeight pour l'utilisateur avec id = 1 sans affecter les autres entrées.

Méthodes alternatives : insertions et mises à jour conditionnelles

Pour gérer à la fois l'insertion et la mise à jour en fonction de l'existence d'un enregistrement, envisagez ces alternatives :

  • 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>
Copier après la connexion

Cela insère une nouvelle ligne si la clé n'existe pas ; sinon, il met à jour la ligne existante.

  • INSERT ... SET : (Bien que fonctionnellement similaire à la méthode VALUES ci-dessus, cette syntaxe est souvent moins préférée pour des raisons de clarté)

Rappelez-vous : si id est une colonne à incrémentation automatique, vous pouvez l'omettre de l'instruction INSERT ; MySQL générera automatiquement un identifiant unique.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal