2013-04-04 10 views
35

Sto cercando di inserire i dati da una tabella 1 in table2MySQL errore 1241: Operando dovrebbe contenere 1 colonna (s)

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

Chiave per table2 è student_id.

Assumiamo che non ci siano duplicati.

ottengo l'errore: MySQL error 1241: Operand should contain 1 column(s)

Ci sono solo quattro colonne in table2.

risposta

86

Errore di sintassi, rimuovere il () da select.

insert into table2 (name, subject, student_id, result) 
select name, subject, student_id, result 
from table1; 
+2

Questo ha risolto anche il mio problema. Ma non capisco perché? – Chud37

16

è sufficiente rimuovere la ( e il ) sul SELECT:

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

Un altro modo per far sì che il parser sollevi la stessa eccezione è la seguente clausola errata.

SELEZIONA r.name dai ruoli r WHERE id IN (SELECT ROLE_ID, system_user_id DA role_members m DOVE r.id = m.role_id E m.system_user_id = intIdSystemUser )

Il nidificato L'istruzione SELECT nella clausola IN restituisce due colonne, che il parser vede come operandi, che è tecnicamente corretto, poiché la colonna id corrisponde ai valori di una colonna (role_id) nel risultato restituito dall'istruzione select nidificata, che è prevista restituire una lista.

Per motivi di completezza, la sintassi corretta è la seguente.

SELEZIONA r.name dai ruoli r WHERE id IN (SELECT ROLE_ID DA role_members m DOVE r.id = m.role_id E m.system_user_id = intIdSystemUser )

La stored procedure di cui questa query è una parte non solo analizzata, ma ha restituito il risultato previsto.

Problemi correlati