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

Pourquoi mon instruction MySQL INSERT ... SELECT donne-t-elle « L'opérande doit contenir 1 colonne(s) » ?

DDD
DDDoriginal
2024-12-04 13:42:12935parcourir

Why Does My MySQL INSERT ... SELECT Statement Result in

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!

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