MySQL错误1241:操作数应包含1列(S)(MySQL error 1241: Operand

2019-08-19 15:03发布

我想从表1到表2的数据插入

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

键表2是student_id数据。

假定没有任何重复。

我得到的错误: MySQL error 1241: Operand should contain 1 column(s)

有表2中仅四列。

Answer 1:

语法错误,删除( )select

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


Answer 2:

只是删除()在你的SELECT语句:

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


Answer 3:

使解析器的另一种方式提出同样的例外是不正确的以下条款。

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 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
             )

其中存储的过程这个查询是不仅解析的一部分,但返回的预期结果。



文章来源: MySQL error 1241: Operand should contain 1 column(s)