Oracle根据临时表使用merge into如何实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle根据临时表使用merge into如何实现相关的知识,希望对你有一定的参考价值。

使用merge into做插入更新没有问题,自己会做,但是我想做一下扩展,如下例:
A和B的表结构都是一样的
ID,CD,NAME,ITEMS,ITEMS_RECORD
--------------------------
一般性的merge into使用法是如下
MERGE INTO A ta
USING B tb
ON (ta.cd = tb.cd)
WHEN MATCHED THEN
UPDATE
SET ta.name = tb.name,
ta.items = tb.items,
WHEN NOT MATCHED THEN
INSERT
VALUES (ta.cd,ta.name,ta.items)

以上是简单的实现了更新和插入

我想实现的是:items_record这个字段是items的累加上去的,但是不能出现重复
我知道可以用 ta.items_record=ta.items_record + tb.items 来实现,但这样一来我多导入几次一样的数据就会出现重复的

哪位仁兄帮忙解决下这个问题

参考技术A 你这个本来就是悖乱,无解。除非你在表里做标志或增加流水以及记录最大流水号
如:
lock table
select maxno into x from history
select max(cd) into y from B;
update history set maxno=y where maxno<y

MERGE INTO A ta
USING (select * from B where cd> x) tb
ON (ta.cd = tb.cd)

commit;

以上是关于Oracle根据临时表使用merge into如何实现的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 使用MERGE INTO 语句更新数据

oracle merge into用法

Oracle基础之Merge into

Oracle中Merge into用法总结

Oracle merge into 的效率问题

oracle中merge into的使用