MySQL Syntax error message quot;Operand should contain 1 column(s)quot;(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 中的每条记录插入到凭证中,ID 和 DENOMINATION 字段对应于 BOOK 表中的条目(temp_cheques 来自数据库备份,我正在尝试以不同的格式重新创建)).但是,当我运行它时,出现错误:
which, as I understand it, should insert into VOUCHER each record from temp_cheques with the ID and DENOMINATION fields corresponding to entries in the BOOK table (temp_cheques comes from a database backup, which I'm trying to recreate in a different format). However, when I run it, I get an error:
Error: Operand should contain 1 column(s)
SQLState: 21000
ErrorCode: 1241
我在 SQuirrel 中运行它,并且没有遇到任何其他查询的问题.我的查询语法有问题吗?
I'm running this in SQuirrel and have not had issues with any other queries. Is there something wrong with the syntax of my query?
BOOK的结构是:
ID int(11)
START_NUMBER int(11)
UNITS int(11)
DENOMINATION double(5,2)
temp_cheques 的结构是:
The structure of temp_cheques is:
ID int(11)
number varchar(20)
推荐答案
尝试从 SELECT 子句中删除括号.来自 Microsoft TechNet,使用 SELECT 子句的 INSERT 语句的正确语法如下.
Try removing the parenthesis from the SELECT clause. From Microsoft TechNet, the correct syntax for an INSERT statement using a SELECT clause is the following.
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 试图在执行可能较长的操作之前警告您这一点.
The error you're getting, "The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay.", is actually correct, assuming you have many rows in both BOOK and temp_cheques. You are trying to query all rows from both tables and make a cross-reference, resulting in an m*n size query. SQL Server is trying to warn you of this, before performing a potentially long operation.
在运行此语句之前设置 SQL_BIG_SELECTS
= 1,然后再试一次.它应该可以工作,但请注意此操作可能需要很长时间.
Set SQL_BIG_SELECTS
= 1 before running this statement, and try again. It should work, but note that this operation may take a long time.
这篇关于MySQL 语法错误消息“操作数应包含 1 列"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:MySQL 语法错误消息“操作数应包含 1 列"


- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 更改自动增量起始编号? 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- SQL 临时表问题 2022-01-01