当前位置: 首页 > 面试题库 >

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

廖弘伟
2023-03-14
问题内容

我尝试运行以下语句:

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来自html" target="_blank">数据库备份,我正在尝试以其他格式重新创建)。但是,当我运行它时,出现错误:

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)

问题答案:

尝试从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,然后重试。应该可以,但是请注意,此操作可能需要很长时间。



 类似资料:
  • 问题内容: 我正在尝试将表1中的数据插入表2中 table2的键是student_id。 假定没有任何重复项。 我得到错误: table2中只有四列。 问题答案: 语法错误,请从中删除。

  • 问题内容: 在正在创建的系统上工作时,我尝试在项目中使用以下查询: 当我使用PDO时,“:cat”受我的PHP代码约束。2是“:cat”的有效值。 该查询虽然给我一个错误:“#1241-操作数应包含1列” 让我感到困扰的是,我认为该查询不会有问题。选择列,然后从另一个表中选择另外两个,然后从那里继续。我只是不知道是什么问题。 有没有简单的解决方法,或者是写查询的另一种方法? 问题答案: 您的子查询

  • 问题内容: 我收到错误“操作数应包含1列”-但是我需要COUNT(e.id) 问题答案: 总有这样的:

  • 问题内容: 这个问题已经在这里有了答案 : 操作数应包含1列-MySQL NOT IN (3个答案) 6年前关闭。 该查询给我以下错误: 错误代码:1241。操作数应包含1列 有任何想法吗? 问题答案: 您不应该在子查询中包括在列表中。只是

  • 我必须做一个程序,找到最大的偶数3给定的数字。然而,我似乎无法让它工作,因为我一直收到这个错误消息。我到底做错了什么? 对于初学者的问题,我很抱歉,但我以前从未见过这个错误消息,也不知道它意味着什么,也不知道如何修复它。 提前谢谢你。

  • 然而,试图创建一个最多4人的组时,具有相同ID的人不能在同一个组中,例如“Tim ID1、Josh ID2、Ben ID3、George ID4”,这将是一个罚款,但“James ID2”不能加入该组,因为Josh已经在其中了。 我不明白为什么这种方法不起作用,任何帮助都将不胜感激。