MySQL错误1241:操作数应包含1列

时间:2013-04-04 19:43:21

标签: mysql sql select insert mysql-error-1241

我正在尝试将table1中的数据插入table2

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中只有四列。

3 个答案:

答案 0 :(得分:104)

语法错误,从( )删除select

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

答案 1 :(得分:18)

只需删除SELECT语句中的()

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

答案 2 :(得分:2)

使解析器引发相同异常的另一种方法是以下错误子句。

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
             )

此查询不仅已解析,而且还返回预期结果的存储过程。