Oracle 代码以将数据插入到不存在的表

标签: sql Oracle
发布时间: 2017/4/15 18:17:02
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图向 Oracle 数据库中的表中插入数据。还有数据已经存在,但不是所有的数据,和我只是不能删除的数据并重新插入它所有。有没有办法将数据插入表中,(不知道哪些数据我失踪)。我的脚本正在运行,但实际插入任何数据 (和我知道那里是数据丢失。我故意取出数据来测试其重新插入。)

Insert into item (item, descr) 
select distinct a.SUBORD, a.SUBORD_DESCR FROM EXIDE.UDT_BOM a, item b 
where b.item = a.subord and not exists 
(select b.item from item b, exide.udt_bom a where a.subord = b.ITEM)

解决方法 1:

如果我追随你在做什么,你可以使用 merge 语句为此︰

merge into item i
using (select subord, subord_descr from exide.udt_bom) u
on (i.item = u.subord)
when not matched then insert (item, descr) values (u.subord, u.subord_descr);

SQL 提琴演示

这也有好处,如果 udt_bom 有现有项目的新说明,您可以更新那些在 item 表太大︰

merge into item i
using (select subord, subord_descr from exide.udt_bom) u
on (i.item = u.subord)
when matched then update set descr = u.subord_descr
when not matched then insert (item, descr) values (u.subord, u.subord_descr);

另一个小提琴

官方微信
官方QQ群
31647020