Maison >base de données >tutoriel mysql >Pourquoi mon instruction MySQL INSERT obtient-elle l'erreur « L'opérande doit contenir 1 colonne(s) » ?

Pourquoi mon instruction MySQL INSERT obtient-elle l'erreur « L'opérande doit contenir 1 colonne(s) » ?

DDD
DDDoriginal
2024-12-17 01:59:25600parcourir

Why Does My MySQL INSERT Statement Get the

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

Message d'erreur de MySQL "L'opérande doit contenir 1 colonne(s)" indique une erreur de syntaxe liée au nombre de colonnes renvoyées par une sous-requête utilisée dans le SELECT d'une instruction INSERT

Dans ce cas spécifique, lors de la tentative d'insertion d'enregistrements dans la table VOUCHER à l'aide d'une clause SELECT qui joint deux tables (temp_cheques et BOOK), l'utilisateur a rencontré cette erreur. La requête tentait d'insérer plusieurs colonnes (numéro, ID et DENOMINATION) de la clause SELECT dans une seule colonne (VOUCHER_NUMBER).

Correction de la syntaxe

Pour Pour résoudre l'erreur, l'utilisateur doit s'assurer que la clause SELECT ne renvoie qu'une seule colonne, qui deviendra la valeur de la colonne cible dans l'instruction INSERT. Une façon d'y parvenir consiste à supprimer les parenthèses de la clause SELECT, conformément à la syntaxe correcte mise en évidence dans la réponse fournie :

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

Considérations supplémentaires

Dans En plus de corriger la syntaxe, il est important de noter l'avertissement concernant l'opération de référence croisée entraînant une requête potentiellement volumineuse si BOOK et temp_cheques contiennent de nombreuses lignes. Pour permettre l'exécution de la requête, il peut être nécessaire de définir SQL_BIG_SELECTS = 1 avant de l'exécuter, comme mentionné dans la réponse.

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