Maison > base de données > tutoriel mysql > Pourquoi une clause WHERE n'est-elle pas valide dans une instruction MySQL INSERT et quelles sont les alternatives ?

Pourquoi une clause WHERE n'est-elle pas valide dans une instruction MySQL INSERT et quelles sont les alternatives ?

Barbara Streisand
Libérer: 2025-01-19 06:53:08
original
774 Les gens l'ont consulté

Why is a WHERE clause invalid in a MySQL INSERT statement, and what are the alternatives?

Instructions MySQL INSERT : pourquoi les clauses WHERE sont des alternatives invalides et appropriées

Introduction :

L'instruction INSERT de MySQL ajoute de nouvelles lignes à une table. Une erreur courante consiste à utiliser une clause WHERE dans une instruction INSERT, qui est syntaxiquement incorrecte. Cet article explique l'erreur et propose des alternatives efficaces.

Requête et explication incorrectes :

La requête suivante n'est pas valide :

INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
Copier après la connexion

Ceci tente d'insérer des valeurs dans Users uniquement si une ligne avec id = 1 existe. L'instruction INSERT de MySQL ne prend pas en charge les clauses WHERE ; il est conçu pour une insertion inconditionnelle.

Corriger la syntaxe MySQL INSERT :

La syntaxe INSERT standard est :

INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );
Copier après la connexion

La clause WHERE est exclusivement utilisée dans les déclarations SELECT, UPDATE et DELETE.

Approches alternatives :

Pour réaliser une insertion ou une mise à jour conditionnelle, envisagez ces options :

  • Insérer une nouvelle ligne avec un identifiant unique : Si id est une clé primaire ou une contrainte unique, insérez simplement la nouvelle ligne :
INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);
Copier après la connexion
  • Mise à jour d'une ligne existante : Utilisez UPDATE pour modifier un enregistrement existant :
UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;
Copier après la connexion
  • INSERT ... ON DUPLICATE KEY UPDATE : Ceci combine l'insertion et la mise à jour. Si une clé en double est trouvée (par exemple, un id existant), la ligne est mise à jour ; sinon, une nouvelle ligne est insérée :
INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;
Copier après la connexion

Considérations importantes :

  • Colonnes id auto-incrémentées : si id est auto-incrémentée, vous pouvez l'omettre de l'instruction INSERT ; MySQL attribuera automatiquement une valeur.
  • Syntaxe INSERT ... ON DUPLICATE KEY UPDATE alternative : ce qui précède peut également être écrit comme :
INSERT INTO Users SET id = 1, weight = 160, desiredWeight = 145 ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145;
```  This form is useful when updating only some columns.
Copier après la connexion

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