我正在尝试将 table1 中的数据插入 table2
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 中只有四列。
我正在尝试将 table1 中的数据插入 table2
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 中只有四列。
语法错误,删除( )
from select
。
insert into table2 (name, subject, student_id, result)
select name, subject, student_id, result
from table1;
只需删除SELECT 语句中的(
and即可:)
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
)
子句中的嵌套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
)
该查询所在的存储过程不仅被解析,而且返回了预期的结果。