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