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

Kum*_*thy 51 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;
Run Code Online (Sandbox Code Playgroud)

table2的关键是student_id.

假设没有任何重复.

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

table2中只有四列.

Dav*_*vid 115

语法错误,删除( )from select.

insert into table2 (name, subject, student_id, result)
select name, subject, student_id, result
from table1;
Run Code Online (Sandbox Code Playgroud)

  • 这也解决了我的问题.但我不明白为什么? (7认同)

fth*_*lla 18

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

insert into table2 (Name, Subject, student_id, result)
select Name, Subject, student_id, result
from table1;
Run Code Online (Sandbox Code Playgroud)


Dav*_*ray 8

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

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
             )
Run Code Online (Sandbox Code Playgroud)

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

此查询所在的存储过程不仅被解析,而且返回了预期的结果。