MySQL 错误 1241:操作数应包含 1 列
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15820288/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
MySQL error 1241: Operand should contain 1 column(s)
提问by Kumaran Senapathy
I am trying to Insert data from a table1 into table2
我正在尝试将 table1 中的数据插入 table2
insert into table2(Name,Subject,student_id,result)
select (Name,Subject,student_id,result)
from table1;
Key for table2 is student_id.
table2 的键是 student_id。
Assume that there are not any duplicates.
假设没有任何重复。
I get the error: MySQL error 1241: Operand should contain 1 column(s)
我收到错误: MySQL error 1241: Operand should contain 1 column(s)
There are only four columns in table2.
表 2 中只有四列。
回答by David
Syntax error, remove the ( )
from select
.
语法错误,删除( )
from select
。
insert into table2 (name, subject, student_id, result)
select name, subject, student_id, result
from table1;
回答by fthiella
Just remove the (
and the )
on your SELECT statement:
只是删除(
和)
你的SELECT语句:
insert into table2 (Name, Subject, student_id, result)
select Name, Subject, student_id, result
from table1;
回答by David A. Gray
Another way to make the parser raise the same exception is the following incorrect clause.
使解析器引发相同异常的另一种方法是以下不正确的子句。
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
)
The nested SELECT
statement in the IN
clause returns two columns, which the parser sees as operands, which is technically correct, since the id column matches values from but one column (role_id) in the result returned by the nested select statement, which is expected to return a list.
子句中的嵌套SELECT
语句IN
返回两列,解析器将其视为操作数,这在技术上是正确的,因为 id 列仅匹配嵌套 select 语句返回的结果中的一列 (role_id) 中的值,该语句预期返回一个列表。
For sake of completeness, the correct syntax is as follows.
为完整起见,正确的语法如下。
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
)
The stored procedure of which this query is a portion not only parsed, but returned the expected result.
此查询所在的存储过程不仅被解析,而且返回了预期的结果。