最近在做一个需求,就是涉及到表的问题,前端传过来一条数据,根据主键,查询数据库,如果不存在,那么久插入到数据库中一条,如果存在的话,就是以主键的方式,对数据库中的数据,进行更新。

拿到这个需求的时候,想的就是直接用if…else…代码进行判断,首先就是查询,查到了记录,就更新,没有查到,就进行数据的直接插入。

这种方法,本来是没有什么问题的,毕竟都能够完成要求,只是,因为数据库中这张表的记录,实在是太大,通过代码的方式,进行查询判断的话,实在是太消耗时间了,后来查询了一下,这才是找到Oracle数据库的merge into的方法完成。

首先,来看看merge into的基本语法(Oracle 9i引入的功能):

MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON (join condition) WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1, col2 = col_val2 WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values);

  

可能对于这个语法,不是太了解,那么咱们现在看一个简单的例子:

merge into Students st using newStudents nst on (st.id = nst.id) when matched then update set st.name = nst.name when not matched then insert values(nst.id, nst.name, nst.sex)

  

这段sql的意思,就是代表着新的学生的id已经存在了数据库中的话,就是 when matched的时候,就执行update操作;when not matched的时候,执行插入操作。

相比起用代码的判断再执行更新或者插入操作,sql语句的执行,在效率上面来说,无疑是得到了一定的提高,所以使用merge into,还是一个不错的选择。

因为对数据库,不太熟悉,没有在第一时间,想到这种操作,这次用到了,也算是学习了,记录一下,以后说不定就是会有用到的时候。

转载于:https://www.cnblogs.com/liuzhihu/p/8176382.html

Oracle中Merge into的用法实例讲解相关推荐

  1. php simplexml_load_file 详解,php中simplexml_load_file函数用法实例讲解

    php中simplexml_load_file函数用法实例讲解 发布于 2015-02-07 06:53:40 | 136 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文 ...

  2. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  3. oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法

    savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...

  4. expr命令用法-实例讲解

    expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串. –格式为: expr Expression(命令读入Expression 参数,计算 ...

  5. BCDEDIT用法实例讲解

    BCDEDIT用法实例讲解 补充:今天才发现BCDEDIT不是纯DOS命令.你必须在XP或者VISTA中才能使用这个命令. ========================== bcdedit.exe ...

  6. Oracle中merge into的使用

    http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5 ...

  7. python的for语句用法_python中list循环语句用法实例

    本文实例讲述了python中list循环语句用法.分享给大家供大家参考.具体用法分析如下: Python 的强大特性之一就是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个 ...

  8. oracle中over()分析函数的用法

    摘自: http://www.poluoluo.com/jzxy/201004/81921.html 百度文库也记载了oracle中over()分析函数的用法 在泡坛子的时候中无意中发现了这个函数,才 ...

  9. oracle中的to_number,Oracle中to_number()函数的用法

    to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...

最新文章

  1. EIGRP实验--协议工作过程详解(一)
  2. openStreetMap学习网站
  3. luoguP4213 【模板】杜教筛(Sum)杜教筛
  4. linux+top+常用参数,linux的top命令参数详细说明
  5. NGS系列文章 - 高通量测序原理
  6. Responsive Web Design 简单介绍与优缺点、实作入门, 响应式设计
  7. python精确运算_Python:执行精确的浮点数运算
  8. 软件测试的学习之路----计算机基础 (图片展示)
  9. [ARM] ARM处理器寻址方式
  10. day023 常用模块02
  11. mysql插入记录到有约束的表_MySQL学习笔记-约束以及修改数据表
  12. 灵棋排盘:一款让人感到惊喜的命理排盘工具
  13. 女人一定要有自己的职业
  14. 如何写好小论文论文摘要
  15. 集群中包括4个节点:2个Master(主备),2个Salve,节点之间局域网连接,可以相互ping通
  16. 微型计算机原理与接口技术-实验一
  17. USB射频功率计DIY——构建软件校准方案
  18. 浙江省计算机c语言考试,浙江省计算机二级c语言上机考试真题(三)程序编写
  19. 【深度学习笔记】常见的图像增强方法:scaling、rotating、flipping、random cropping
  20. 零基础最简单方式学习Linux?

热门文章

  1. php 设置session目录,php设置session保存目录的方法
  2. stcisp一直检测单片机_三种方法对比:STC51单片机实现免冷启动
  3. 速来围观!leetcode java实现汇总
  4. 获取ntoskrnl的基址
  5. 关于mysql数据库的外键插入报错:Cannot add or update a child row: a foreign key constraint fails,完整性问题
  6. Pixhawk---超声波模块添加说明(I2C方式)
  7. 数据处理之判断值是否为nan(空值)记录
  8. numpy高级操作,求高维矩阵的距离矩阵(方阵)以及 求某一个维度的累加和 , 矩阵切片操作
  9. 字符串中最后一个单词长度
  10. C++——异步操作(std::future、std::async、std::packaged_task、std::promise)