Ошибка MySQL 1241: операнд должен содержать 1 столбец(ы)

Я пытаюсь вставить данные из таблицы 1 в таблицу 2

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)

в таблице 2 всего четыре столбца.

3 ответов


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

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

просто удалить ( и ) на вашем заявлении SELECT:

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

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

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
             )

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

для полноты, правильный синтаксис как следует.

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
             )

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