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

 更新时间:2023年11月15日 08:35:38   作者: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同表更新或插入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle CBO优化模式中的5种索引访问方法浅析

    Oracle CBO优化模式中的5种索引访问方法浅析

    这篇文章主要介绍了Oracle CBO优化模式中的5种索引访问方法浅析,包含索引唯一扫描、索引范围扫描、索引全扫描、索引跳跃扫描、索引快速全扫描等内容,需要的朋友可以参考下
    2014-07-07
  • SQLPlus命令操作用法详解

    SQLPlus命令操作用法详解

    这篇文章主要介绍了SQLPlus命令操作用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Oracle如何查询表索引和索引字段

    Oracle如何查询表索引和索引字段

    这篇文章主要介绍了Oracle如何查询表索引和索引字段问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 深入浅析Oracle数据库管理之创建和删除数据库

    深入浅析Oracle数据库管理之创建和删除数据库

    本篇文章给大家介绍oracle数据库管理之创建和删除数据库,本文从数据库管理概述、数据库管理方法、数据库的准则、使用dbca创建数据库、使用dbca删除数据库等五大方面展开话题,需要的朋友一起学习吧
    2015-10-10
  • Oracle数据库的安全策略

    Oracle数据库的安全策略

    Oracle数据库的安全策略...
    2007-03-03
  • Oracle提高空间使用率的方法小结

    Oracle提高空间使用率的方法小结

    这篇文章给大家详细介绍了Oracle 如何提高空间使用率,文中给大家总结了八种提高Oracle空间使用率的方法,并通过图文讲解的非常详细,需要的朋友可以参考下
    2024-02-02
  • MySQL实现按分秒统计数据量方式

    MySQL实现按分秒统计数据量方式

    在MySQL中,通过使用GROUP BY结合时间处理函数,可以有效统计每秒、每分钟、每5分钟、每10分钟和每30分钟的交易量,通过对transaction_time字段进行格式化和分段,可以灵活调整统计的时间间隔,此方法适用于需要精确时间段统计的场景,如性能监控、数据分析等
    2024-10-10
  • Oracle数据库并行查询出错的解决方法

    Oracle数据库并行查询出错的解决方法

    这篇文章主要介绍了Oracle数据库并行查询出错的解决方法,需要的朋友可以参考下
    2014-07-07
  • Oracle中创建和管理表详解

    Oracle中创建和管理表详解

    以下是对Oracle中的创建和管理表进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • Oracle表空间利用率不足的处理流程

    Oracle表空间利用率不足的处理流程

    在生产环境中,一般设置表空间告警阈值是90%,在接到监控报警后,并不是需要立刻对表空间进行扩容,本文给大家介绍了Oracle表空间利用率不足的处理流程,需要的朋友可以参考下
    2024-06-06

最新评论