MySQL 错误 1241:操作数应包含 1 列
Posted
技术标签:
【中文标题】MySQL 错误 1241:操作数应包含 1 列【英文标题】:MySQL error 1241: Operand should contain 1 column(s) 【发布时间】:2013-03-27 01:31:17 【问题描述】:我正在尝试将 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)
table2 中只有四列。
【问题讨论】:
【参考方案1】:只需删除 SELECT 语句中的 (
和 )
:
insert into table2 (Name, Subject, student_id, result)
select Name, Subject, student_id, result
from table1;
【讨论】:
OperationalError: (MySQLdb._exceptions.OperationalError) (1241, '操作数应包含 1 列') [SQL: INSERT INTO meedan_newsartcile_details (标识符,@context
, @type
, @987654326 @, url, author, claimReviewed
, text
, image, reviewRating
, 判断,我出错了,如何解决? article_title, type, ratingValue
, bestRating
, author_name, author_url, ID
, news_source) 值 (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)]【参考方案2】:
语法错误,从select
中删除( )
。
insert into table2 (name, subject, student_id, result)
select name, subject, student_id, result
from table1;
【讨论】:
这也解决了我的问题。但我不明白为什么?【参考方案3】:另一种使解析器引发相同异常的方法是以下不正确的子句。
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 语句,预期返回一个列表。
为了完整起见,正确的语法如下。
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
)
这个查询所在的存储过程不仅被解析,而且返回了预期的结果。
【讨论】:
以上是关于MySQL 错误 1241:操作数应包含 1 列的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 SQLSTATE[21000]:基数违规:1241 操作数应包含 1 列
Zend Framework 基数违规:1241 操作数应包含 1 列
java 和 sql 显示 #1241 - 操作数应包含 1 列