首页 >数据库 >mysql教程 >MySQL INSERT ... SELECT 错误:为什么'操作数应包含 1 列”?

MySQL INSERT ... SELECT 错误:为什么'操作数应包含 1 列”?

Susan Sarandon
Susan Sarandon原创
2024-12-11 10:21:15436浏览

MySQL INSERT ... SELECT Error: Why

MySQL:理解“操作数应包含 1 列”语法错误

查询和错误

当尝试使用 SELECT 子句执行 INSERT 语句时,如下所示,您会遇到错误:

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;

您收到的错误消息是:

Error: Operand should contain 1 column(s)
SQLState:  21000
ErrorCode: 1241

语法更正

该错误表示 SELECT 存在语法问题条款。要解决此问题,请从 SELECT 子句中删除括号,并将其编写如下:

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;

说明

使用 SELECT 子句的 INSERT 语句的正确语法要求 SELECT 子句返回单个列,而不是包含在

其他注意事项

如果更正语法后仍然遇到问题,请考虑以下事项:

  • 确保有WHERE 子句中没有交叉连接条件,这可能会导致过多的行组合。
  • 检查BOOK 和 temp_cheques 表中的数据大小。大型数据集可能需要增加 SQL_BIG_SELECTS 系统变量以允许更大的查询。

以上是MySQL INSERT ... SELECT 错误:为什么'操作数应包含 1 列”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn