Oracle实现同表更新或插入的三种方案
作者:xyy123
这篇文章主要给大家介绍了Oracle实现同表更新或插入的三种方案,文章通过代码示例和图文结合讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
一、需求
现在有一张count表,存在两个字段name和count,分别记录输入的名称以及出现的次数
要求输入的名称若在表中未存在,则新增,并初始化count的值为1
若在表中已经存在,则将count值加一
二、实现
2.1 方案一
在处理前统计name出现的次数,若大于一,则修改,否则为新增
2.2 方案二
根据上面的逻辑,使用plsql实现
DECLARE v_count NUMBER; v_name char(20); BEGIN v_name:='a'; SELECT COUNT(*) INTO v_count FROM (SELECT name, COUNT(*) as count FROM count GROUP BY name) WHERE name = v_name; IF v_count >= 1 THEN UPDATE count SET count = count + 1 WHERE name = v_name; ELSE INSERT INTO count values(v_name,1); END IF; END;
更新:此时往表中插入一条已经存在的name a,只需修改v_name 的值为'a'
新增:此时往表中插入一条不存在的name c,修改v_name 的值为'c'
2.3 方案三
根据上面的逻辑,使用merge into实现
merge into count c1 using ( select count(*) count from count c2 where c2.name = 'a' ) c3 on (c3.count > 0) when matched then update set c1.count = c1.count + 1 where c1.name = 'a' when not matched then insert values('a',1) ;
现在清空数据表,新增一行数据a
再次点击执行,则执行修改逻辑
到此这篇关于Oracle实现同表更新或插入的方案总结的文章就介绍到这了,更多相关Oracle同表更新或插入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!