当前位置: 代码网 > it编程>数据库>Oracle > Oracle实现同表更新或插入的三种方案

Oracle实现同表更新或插入的三种方案

2024年05月19日 Oracle 我要评论
一、需求现在有一张count表,存在两个字段name和count,分别记录输入的名称以及出现的次数要求输入的名称若在表中未存在,则新增,并初始化count的值为1若在表中已经存在,则将count值加一

一、需求

现在有一张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同表更新或插入内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com