开发者社区> 问答> 正文

MySQL语法错误消息“操作数应包含1列”

我尝试运行以下语句:

INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION) SELECT (a.number, b.ID, b.DENOMINATION) FROM temp_cheques a, BOOK b WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1; 据我所知,应该将temp_cheques中的每个记录插入到VOUCHER中,并将ID和DENOMINATION字段与BOOK表中的条目相对应(temp_cheques来自数据库备份,我正在尝试以其他格式重新创建)。但是,当我运行它时,出现错误:

Error: Operand should contain 1 column(s) SQLState: 21000 ErrorCode: 1241 我正在SQuirrel中运行此程序,而其他任何查询都没有问题。我的查询语法有问题吗?

编辑:

BOOK的结构为:

ID int(11) START_NUMBER int(11) UNITS int(11) DENOMINATION double(5,2) temp_cheques的结构为:

ID int(11) number varchar(20)

展开
收起
保持可爱mmm 2020-05-11 16:06:32 565 0
1 条回答
写回答
取消 提交回答
  • 尝试从SELECT子句中删除括号。在Microsoft TechNet中,以下是使用SELECT子句的INSERT语句的正确语法。

    INSERT INTO MyTable (PriKey, Description) SELECT ForeignKey, Description FROM SomeView 您得到的错误是“假设SELECT可以检查多于MAX_JOIN_SIZE行;如果SELECT没问题,请检查WHERE并使用SET SQL_BIG_SELECTS = 1或SET SQL_MAX_JOIN_SIZE =#”实际上是正确的。图书和temp_cheques。您正在尝试查询两个表中的所有行并进行交叉引用,从而导致m * n大小的查询。SQL Server在执行可能较长的操作之前,试图警告您。

    SQL_BIG_SELECTS在运行该语句之前将其设置为1,然后重试。应该可以,但是请注意,此操作可能需要很长时间。来源:stack overflow

    2020-05-11 16:06:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像