SQL错误:ORA-00913:值太多

use*_*444 11 sql oracle

两个表在表名,列名,数据类型和大小方面完全相同.这些表位于不同的数据库中,但我用于当前以hr用户身份登录.

insert into abc.employees select * from employees where employee_id=100; 
Run Code Online (Sandbox Code Playgroud)

我无法使用公司办公室的原始查询.

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:
Run Code Online (Sandbox Code Playgroud)

Rob*_*ert 7

您应该指定列名称,如下所示.这是一个很好的做法,可能会解决你的问题

insert into abc.employees (col1,col2) 
select col1,col2 from employees where employee_id=100; 
Run Code Online (Sandbox Code Playgroud)

编辑:

如你所说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'
Run Code Online (Sandbox Code Playgroud)

而且你应该升级你的表以具有相同的结构.


小智 7

00947 消息表明您尝试发送到 Oracle 的记录缺少创建表时包含的一个或多个列。00913 消息表明您尝试发送到 Oracle 的记录包含的列数多于创建表时包含的列数。您只需要检查两个表(即sql 涉及的表)中的列数及其类型。