Maison >base de données >tutoriel mysql >Pourquoi mon instruction MySQL INSERT ... SELECT donne-t-elle « L'opérande doit contenir 1 colonne(s) » ?
Erreur MySQL : "L'opérande doit contenir 1 colonne(s)"
Lors de l'exécution d'une instruction INSERT à l'aide d'une clause SELECT dans MySQL, vous peut rencontrer l'erreur "L'opérande doit contenir 1 colonne(s)". Cette erreur se produit lorsque la clause SELECT renvoie plus d'une colonne, violant le format attendu de l'instruction INSERT.
Pour résoudre ce problème, suivez la syntaxe correcte d'une instruction INSERT avec une clause SELECT :
INSERT INTO MyTable (PriKey, Description) SELECT ForeignKey, Description FROM SomeView
Dans votre requête spécifique, supprimez les parenthèses de la clause SELECT :
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;
De plus, l'erreur "Le SELECT examinerait plus de MAX_JOIN_SIZE lignes ; vérifiez votre WHERE et utilisez SET SQL_BIG_SELECTS=1 ou SET SQL_MAX_JOIN_SIZE=# si le SELECT est correct." indique que la requête de référence croisée peut aboutir à un ensemble de résultats volumineux. Pour autoriser l'opération, exécutez l'instruction suivante avant d'exécuter la requête INSERT :
SET SQL_BIG_SELECTS = 1
Notez que cela peut encore entraîner un temps d'exécution long.
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!