PL/SQL插入一个表减去另一个表,但同时插入另一列

PL/SQL插入一个表减去另一个表,但同时插入另一列,sql,plsql,oracle11g,oracle-sqldeveloper,Sql,Plsql,Oracle11g,Oracle Sqldeveloper,我有一个小问题,比如说我有一个有5列的表,我使用减去从插入另一个有4列的表 当我执行该语句时,在第5列中插入(null)或“”值时出现问题,原因如下: 所选列数无效(从中减去的表没有第5列) 这是我用于insert into语句的代码 INSERT INTO my_table(SELECT col1, col2, col3, col4 FROM that_table MINUS SELECT col1, col2, col3, col4 FROM my_table); 这段代码可以工作,如果

我有一个小问题,比如说我有一个有5列的表,我使用
减去
插入另一个有4列的表

当我执行该语句时,在第5列中插入(null)或“”值时出现问题,原因如下:
所选列数无效
(从中减去的表没有第5列)

这是我用于insert into语句的代码

INSERT INTO my_table(SELECT col1, col2, col3, col4 FROM that_table 
MINUS SELECT col1, col2, col3, col4 FROM my_table);
这段代码可以工作,如果我不创建第5列,它会复制我需要的任何内容,有没有办法将另一个表中的值插入到我的表中,与我的_表中的第5列相邻


谢谢

假设我理解了您的问题,您想从
该_表
中选择所有记录,并将其插入
我的_表
中前4列不存在的位置,使用
null
作为第5列的值?如果是,您可以使用
不存在

insert into my_table (col1, col2, col3, col4, col5)
select col1, col2, col3, col4, null
from that_table tt
where not exists (
    select 1
    from my_table mt
    where tt.col1 = mt.col1 and tt.col2 = mt.col2 
      and tt.col3 = mt.col3 and tt.col4 = mt.col4
    )

您还应该能够使用
减号
,只需确保列数和数据类型相同即可:

insert into my_table (col1, col2, col3, col4, col5)
select col1, col2, col3, col4, null
from that_table
minus
select col1, col2, col3, col4, null
from my_table 

如果只想插入选定的列,请尝试以下操作:

insert into my_table(col1,col2,col3,col4,col5)从该_table中选择col1,col2,col3,col4,null


您可以在

上找到更多信息,感谢您提出的编辑DKS:DApologies,因为它没有让我的问题更清楚,因为_表包含我需要复制到当前表的数据,但我的当前表我已经创建了一个额外的列。我需要数据从该_表复制到我的_表,并在第5列中为每个复制的记录插入空值。我将尝试这个方法,看看是否可以得到任何东西。@user3674993——我相信这个方法应该可以做到这一点。您还可以使用
减号
——只需确保两个查询返回的列数相同(两个查询的最后一列可能都为null)。我只是更喜欢这种方法。啊!我尝试过做类似的事情,除了从我的_表中插入NULL之外,解决方案非常明显!!谢谢你的真知灼见,伙计,我来看看链接。