当前位置:  开发笔记 > 后端 > 正文

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

如何解决《MySQL语法错误消息"操作数应包含1列"》经验,为你挑选了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)

lc... 51

尝试从SELECT子句中删除括号.从Microsoft TechNet,使用SELECT子句的INSERT语句的正确语法如下.

INSERT INTO MyTable  (PriKey, Description)
       SELECT ForeignKey, Description
       FROM SomeView

你得到的错误,"SELECT将检查超过MAX_JOIN_SIZE行;检查你的WHERE并使用SET SQL_BIG_SELECTS = 1或SET SQL_MAX_JOIN_SIZE =#如果SELECT没问题.",实际上是正确的,假设你有两行BOOK和temp_cheques.您正在尝试查询两个表中的所有行并进行交叉引用,从而产生m*n大小的查询.在执行可能很长的操作之前,SQL Server正试图警告您.

SQL_BIG_SELECTS在运行此语句之前设置= 1,然后重试.它应该工作,但请注意,此操作可能需要很长时间.



1> lc...:

尝试从SELECT子句中删除括号.从Microsoft TechNet,使用SELECT子句的INSERT语句的正确语法如下.

INSERT INTO MyTable  (PriKey, Description)
       SELECT ForeignKey, Description
       FROM SomeView

你得到的错误,"SELECT将检查超过MAX_JOIN_SIZE行;检查你的WHERE并使用SET SQL_BIG_SELECTS = 1或SET SQL_MAX_JOIN_SIZE =#如果SELECT没问题.",实际上是正确的,假设你有两行BOOK和temp_cheques.您正在尝试查询两个表中的所有行并进行交叉引用,从而产生m*n大小的查询.在执行可能很长的操作之前,SQL Server正试图警告您.

SQL_BIG_SELECTS在运行此语句之前设置= 1,然后重试.它应该工作,但请注意,此操作可能需要很长时间.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有