Heim > Datenbank > MySQL-Tutorial > MySQL INSERT ... SELECT-Fehler: Warum sollte „Operand 1 Spalte(n) enthalten'?

MySQL INSERT ... SELECT-Fehler: Warum sollte „Operand 1 Spalte(n) enthalten'?

Susan Sarandon
Freigeben: 2024-12-11 10:21:15
Original
438 Leute haben es durchsucht

MySQL INSERT ... SELECT Error: Why

MySQL: Den Syntaxfehler „Operand sollte 1 Spalte(n) enthalten“ verstehen

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;
Nach dem Login kopieren

Die Fehlermeldung, die Sie erhalten, lautet:

Error: Operand should contain 1 column(s)
SQLState:  21000
ErrorCode: 1241
Nach dem Login kopieren

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;
Nach dem Login kopieren

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:

  • Stellen Sie sicher, dass die WHERE-Klausel keine Cross-Join-Bedingungen enthält, die dazu führen können zu übermäßigen Zeilenkombinationen führen.
  • Überprüfen Sie die Datengrößen sowohl in der BOOK- als auch in der temp_cheques-Tabelle. Bei großen Datensätzen kann es erforderlich sein, die Systemvariable SQL_BIG_SELECTS zu erhöhen, um größere Abfragen zu ermöglichen.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage