2013-04-04 3 views
35

Я пытаюсь вставить данные из table1 в table2MySQL Ошибка 1241: Операнд должен содержать 1 столбец (ы)

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

Ключ для table2 является student_id.

Предположим, что нет дубликатов.

я получаю ошибку: MySQL error 1241: Operand should contain 1 column(s)

Есть только четыре колонки в table2.

ответ

86

Синтаксическая ошибка, удалите () из select.

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

Это также решило мою проблему. Но я не понимаю, почему? – Chud37

16

Просто удалите ( и ) на вашем ЗЕЬЕСТ:

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

Другой способ сделать синтаксический разбор аналогичным исключением - следующее неправильное предложение.

ВЫБОР r.name ОТ роли г WHERE ID IN (SELECT ROLE_ID, system_user_id ОТ role_members м ГДЕ r.id = m.role_id И m.system_user_id = intIdSystemUser )

вложенной Оператор SELECT в предложении IN возвращает два столбца, которые парсер видит как операнды, что является технически корректным, поскольку столбец id соответствует значениям из одного столбца (role_id) в результате, возвращаемом вложенным оператором select, который, как ожидается, вернется список.

Для полноты правильного синтаксиса является следующим.

ВЫБОР r.name ОТ роли г WHERE ID IN (SELECT ROLE_ID ОТ role_members м ГДЕ r.id = m.role_id И m.system_user_id = intIdSystemUser )

Хранимая процедура которого этот запрос является частью, которая не только анализируется, но и возвращает ожидаемый результат.

Смежные вопросы