【问题标题】:MySQL error 1241: Operand should contain 1 column(s)MySQL 错误 1241:操作数应包含 1 列
【发布时间】: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 中只有四列。

【问题讨论】:

    标签: mysql sql select insert mysql-error-1241


    【解决方案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
                 )
    

    这个查询所在的存储过程不仅被解析,而且返回了预期的结果。

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 1970-01-01
      • 2013-10-04
      • 2023-03-21
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多