Maison >base de données >tutoriel mysql >MySQL INSERT... Erreur SELECT : pourquoi « l'opérande doit contenir 1 colonne(s) » ?

MySQL INSERT... Erreur SELECT : pourquoi « l'opérande doit contenir 1 colonne(s) » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 10:21:15488parcourir

MySQL INSERT ... SELECT Error: Why

MySQL : Comprendre l'erreur de syntaxe "L'opérande doit contenir 1 colonne(s)"

La requête et l'erreur

Lorsque vous tentez d'exécuter une instruction INSERT à l'aide d'une clause SELECT, comme indiqué ci-dessous, vous rencontrez un error :

INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION)
SELECT (a.number, b.ID, b.DENOMINATION) 
FROM temp_cheques a, BOOK b
WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;

Le message d'erreur que vous recevez est :

Error: Operand should contain 1 column(s)
SQLState:  21000
ErrorCode: 1241

Correction de la syntaxe

L'erreur indique un problème de syntaxe avec le SELECT clause. Pour résoudre ce problème, supprimez les parenthèses de la clause SELECT et écrivez-la comme suit :

INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION)
SELECT a.number, b.ID, b.DENOMINATION 
FROM temp_cheques a, BOOK b
WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;

Explication

La syntaxe correcte pour une instruction INSERT utilisant une clause SELECT nécessite que la clause SELECT renvoie une seule colonne, et non plusieurs colonnes entre parenthèses.

Supplémentaire Considérations

Si vous continuez à rencontrer des problèmes après avoir corrigé la syntaxe, considérez les éléments suivants :

  • Assurez-vous qu'il n'y a pas de conditions de jointure croisée dans la clause WHERE, qui peuvent conduire à des combinaisons de lignes excessives.
  • Vérifiez la taille des données dans les tables BOOK et temp_cheques. Les ensembles de données volumineux peuvent nécessiter une augmentation de la variable système SQL_BIG_SELECTS pour permettre des requêtes plus volumineuses.

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