2013-04-04 7 views
35

Próbuję Wstawianie danych z Tabela1 do tabela2MySQL Błąd 1241: Argument powinien zawierać 1 kolumnę (-y)

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

Klucz Table2 jest student_id.

Załóżmy, że nie ma żadnych duplikatów.

pojawia się błąd: MySQL error 1241: Operand should contain 1 column(s)

Istnieją tylko cztery kolumny w tabela2.

Odpowiedz

86

Błąd składni, usuń () z select.

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

To również rozwiązało mój problem. Ale nie rozumiem, dlaczego? – Chud37

16

Wystarczy wyjąć ( i ) na SELECT:

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

Innym sposobem, aby parser zgłosił ten sam wyjątek, jest poniższa niepoprawna klauzula.

SELECT r.name pełniły r GDZIE ID w (SELECT ROLE_ID, system_user_id Z role_members m GDZIE r.id = m.role_id I m.system_user_id = intIdSystemUser )

zagnieżdżona Instrukcja SELECT w klauzuli IN zwraca dwie kolumny, które analizator widzi jako operandy, co jest technicznie poprawne, ponieważ kolumna id dopasowuje wartości z jednej kolumny (role_id) do wyniku zwróconego przez zagnieżdżoną instrukcję select, która ma powrócić lista.

Dla zachowania kompletności poprawna składnia jest następująca.

SELECT r.name pełniły r GDZIE ID w (SELECT ROLE_ID Z role_members m GDZIE r.id = m.role_id I m.system_user_id = intIdSystemUser ), z których

Procedura przechowywana to zapytanie jest częścią nie tylko analizowaną, ale zwróciło oczekiwany wynik.

Powiązane problemy