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



我正在尝试从表1插入数据到表2

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

表2的Key是student_id

假设没有重复项。

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

语法错误,从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
             )

作为该查询一部分的存储过程不仅被解析,而且返回了预期的结果。

相关内容

  • 没有找到相关文章