SQL 错误:ORA-00913:值太多
Posted
技术标签:
【中文标题】SQL 错误:ORA-00913:值太多【英文标题】:SQL Error: ORA-00913: too many values 【发布时间】:2013-09-11 09:25:29 【问题描述】:两个表在表名、列名、数据类型和大小方面是相同的。这些表位于不同的数据库中,但我习惯于 当前登录 hr 用户。
insert into abc.employees select * from employees where employee_id=100;
我无法使用公司办公室的原始查询。
Error starting at line 1 in command:
insert into abc.employees select * from employees where employee_id=100;
Error at Command Line:1 Column:25
Error report:
SQL Error: ORA-00913: too many values
00913. 00000 - "too many values"
*Cause:
*Action:
【问题讨论】:
【参考方案1】:您应该如下指定列名。这是一个很好的做法,可能会解决您的问题
insert into abc.employees (col1,col2)
select col1,col2 from employees where employee_id=100;
编辑:
正如你所说,employees
有 112 列(原文如此!)尝试在 select 下面运行以比较两个表的列
select *
from ALL_TAB_COLUMNS ATC1
left join ALL_TAB_COLUMNS ATC2 on ATC1.COLUMN_NAME = ATC1.COLUMN_NAME
and ATC1.owner = UPPER('2nd owner')
where ATC1.owner = UPPER('abc')
and ATC2.COLUMN_NAME is null
AND ATC1.TABLE_NAME = 'employees'
你应该升级你的表以具有相同的结构。
【讨论】:
不可能,因为原始表有 112 列,并且可以在 800+ 大表上工作,所以......employees
表有 112 列!?
@user2703444 我忘记了AND ATC1.TABLE_NAME = 'employees'
条件:),请立即尝试
通常,Oracle 对象/模式名称是大写的(除非在创建时明确引用),所以我猜这应该是 "ATC1.owner = 'ABC'" / "ATC1.TABLE_NAME = 'EMPLOYEES '"。
@FrankSchmitt 对!我添加了upper
函数【参考方案2】:
00947 消息表明您尝试发送到 Oracle 的记录缺少创建表时包含的一个或多个列。 00913 消息表明您尝试发送到 Oracle 的记录包含的列多于创建表时包含的列。 您只需要检查两个表中的列数及其类型 即sql中涉及的表。
【讨论】:
【参考方案3】:如果您在一个表中有 112 列,并且您想从源表中插入数据,您可以这样做
create table employees as select * from source_employees where employee_id=100;
或者从 sqlplus 做 as
copy from source_schema/password insert employees using select * from
source_employees where employee_id=100;
【讨论】:
它会创建只有一行的表格,如果你想复制到同一个表格旁边,你会怎么做? @Parado 什么行满足条件将被复制到目标表。 但是如果 OP 想要每天、每周复制数据? @Parado OP 在哪里指定他每周都会复制数据? @Parado 不确定您到底指的是什么。 OP 必须决定他想做什么。【参考方案4】:对我来说这很完美
insert into oehr.employees select * from employees where employee_id=99
我不确定你为什么会出错。您生成的错误代码的性质是列不匹配。
一种好方法是使用@Parodo 指定的答案
【讨论】:
【参考方案5】:这有点晚了.. 但是我已经看到当您想从/向 DB 插入或删除一行但您放置/拉出多于一行或多个值时会出现此问题,
例如:
您想从数据库中删除具有特定值(例如项目的 id)的一行,但您查询了一个 id 列表,那么您将遇到相同的异常消息。
问候。
【讨论】:
以上是关于SQL 错误:ORA-00913:值太多的主要内容,如果未能解决你的问题,请参考以下文章