Die Abfrage und der Fehler
Wenn Sie versuchen, eine INSERT-Anweisung mit einer SELECT-Klausel auszuführen, wie unten gezeigt, stoßen Sie auf eine Fehler:
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;
Die Fehlermeldung, die Sie erhalten, lautet:
Error: Operand should contain 1 column(s) SQLState: 21000 ErrorCode: 1241
Syntaxkorrektur
Der Fehler weist auf ein Syntaxproblem mit SELECT hin Klausel. Um dieses Problem zu beheben, entfernen Sie die Klammern aus der SELECT-Klausel und schreiben Sie sie wie folgt:
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;
Erklärung
Die richtige Syntax für eine INSERT-Anweisung mit einer SELECT-Klausel erfordert, dass die SELECT-Klausel eine einzelne Spalte zurückgibt, nicht mehrere in Klammern eingeschlossene Spalten.
Zusätzlich Überlegungen
Wenn nach der Korrektur der Syntax weiterhin Probleme auftreten, beachten Sie Folgendes:
Das obige ist der detaillierte Inhalt vonMySQL INSERT ... SELECT-Fehler: Warum sollte „Operand 1 Spalte(n) enthalten'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!