首页 > 解决方案 > INSERT INTO 具有不同的列数

问题描述

我想将表 A (NAG) 中的一行插入表 B (Kunde)。

NAG 表只有 4 列,Kunde 表有 13 列。由于列数不同,我总是会收到一个错误:ora-00913 too many values。

我使用的查询是:

INSERT INTO kunde
SELECT * FROM NAG
left outer join kunde ON NAG.adrnr = kunde.adrnr
WHERE kunde.adrnr IS NULL

adrnr 是客户 ID。如果有帮助,我正在使用 SQLTools 1.8b38。谁能帮我解决这个问题?谢谢你。

标签: sqloracleselectleft-joinsql-insert

解决方案


您需要枚举insert命令中的目标列,并相应地枚举select源表中的相关列)。

看起来你想要:

insert into kunde (adrnr, tmstmp, matchcode, art)
select n.adrnr, n.tmstmp, n.matchcode, n.art
from nag n
where not exists (select 1 from kunde k where n.adrnr = k.adrnr)

我重写了left join ... where ... is nullas not exists,因为我发现它更清晰 - 但逻辑与 a 相同left join


推荐阅读