it-swarm.com.de

MySQL-Fehler 1241: Operand sollte 1 Spalte (n) enthalten

Ich versuche, Daten von einer Tabelle1 in Tabelle2 einzufügen

insert into table2(Name,Subject,student_id,result)
select (Name,Subject,student_id,result)
from table1;

Schlüssel für table2 ist student_id.

Angenommen, es gibt keine Duplikate.

Ich erhalte den Fehler: MySQL error 1241: Operand should contain 1 column(s)

In Tabelle 2 gibt es nur vier Spalten.

47

Syntaxfehler, entfernen Sie das ( ) von select.

insert into table2 (name, subject, student_id, result)
select name, subject, student_id, result
from table1;
112
David

Entfernen Sie einfach das ( und der ) in Ihrer SELECT-Anweisung:

insert into table2 (Name, Subject, student_id, result)
select Name, Subject, student_id, result
from table1;
18
fthiella

Eine andere Möglichkeit, den Parser dazu zu bringen, dieselbe Ausnahme auszulösen, ist die folgende falsche Klausel.

SELECT r.name
FROM roles r
WHERE id IN ( SELECT role_id ,
                     system_user_id
                 FROM role_members m
                 WHERE r.id = m.role_id
                 AND m.system_user_id = intIdSystemUser
             )

Die geschachtelte SELECT -Anweisung in der IN -Klausel gibt zwei Spalten zurück, die der Parser technisch korrekt als Operanden ansieht, da die id-Spalte nur mit den Werten einer Spalte (role_id) im Ergebnis übereinstimmt wird von der verschachtelten select-Anweisung zurückgegeben, von der erwartet wird, dass sie eine Liste zurückgibt.

Der Vollständigkeit halber lautet die korrekte Syntax wie folgt.

SELECT r.name
FROM roles r
WHERE id IN ( SELECT role_id
                 FROM role_members m
                 WHERE r.id = m.role_id
                 AND m.system_user_id = intIdSystemUser
             )

Die gespeicherte Prozedur, deren Bestandteil diese Abfrage ist, hat nicht nur das erwartete Ergebnis analysiert, sondern auch zurückgegeben.

3
David A. Gray