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

200857 次浏览

只需删除 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
)

IN子句中的嵌套 SELECT语句返回两列,解析器将其视为操作数,这在技术上是正确的,因为 id 列只匹配嵌套 select 语句返回的结果中的一列(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
)

此查询是其中一部分的存储过程不仅进行了分析,而且返回了预期的结果。