我正在尝试从表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
)
作为该查询一部分的存储过程不仅被解析,而且返回了预期的结果。