Heim >Datenbank >MySQL-Tutorial >Warum erhält meine MySQL-INSERT-Anweisung den Fehler „Operand sollte 1 Spalte(n) enthalten'?
Verstehen des MySQL-Fehlers „Operand sollte 1 Spalte(n) enthalten“
MySQL-Fehlermeldung „Operand sollte 1 Spalte(n) enthalten“ weist auf einen Syntaxfehler im Zusammenhang mit der Anzahl der Spalten hin, die von einer Unterabfrage zurückgegeben werden, die in der SELECT-Anweisung einer INSERT-Anweisung verwendet wird -Klausel.
In diesem speziellen Fall ist der Benutzer auf diesen Fehler gestoßen, als er versuchte, mithilfe einer SELECT-Klausel, die zwei Tabellen (temp_cheques und BOOK) verbindet, Datensätze in die VOUCHER-Tabelle einzufügen. Die Abfrage hat versucht, mehrere Spalten (Nummer, ID und DENOMINATION) aus der SELECT-Klausel in eine einzelne Spalte (VOUCHER_NUMBER) einzufügen.
Korrektur der Syntax
An Um den Fehler zu beheben, muss der Benutzer sicherstellen, dass die SELECT-Klausel nur eine Spalte zurückgibt, die zum Wert der Zielspalte in der INSERT-Anweisung wird. Eine Möglichkeit, dies zu erreichen, besteht darin, die Klammern aus der SELECT-Klausel zu entfernen, gemäß der korrekten Syntax, die in der bereitgestellten Antwort hervorgehoben wird:
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;
Zusätzliche Überlegungen
In Zusätzlich zur Korrektur der Syntax ist es wichtig, die Warnung hinsichtlich des Querverweisvorgangs zu beachten, der zu einer möglicherweise großen Abfrage führt, wenn sowohl BOOK als auch temp_cheques viele enthalten Reihen. Damit die Abfrage ausgeführt werden kann, muss möglicherweise vor der Ausführung SQL_BIG_SELECTS = 1 festgelegt werden, wie in der Antwort erwähnt.
Das obige ist der detaillierte Inhalt vonWarum erhält meine MySQL-INSERT-Anweisung den Fehler „Operand sollte 1 Spalte(n) enthalten'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!