zoukankan      html  css  js  c++  java
  • oracle中merge方法

      先看SQL语句:merge into employee e using emps em on (e.emp_id=em.emp_id)

    when matched then  update set e.emp_name=em.emp_name

    when not matched then insert values (em.emp_id,em.emp_name)

      1.将emps表中的数据更新到employee表中,以主键匹配,如果主键匹配就执行update语句,如果不匹配则执行insert语句,需要注意的是,如果emps表中的数据均匹配employee表的数据,则不能写insert语句,也可以指处理匹配的情况,即没有when not matched 语句

      2.using后边也可以用视图或者子查询,如上边的例子也可以写为:

    merge into employee e using (select * from  emps) em on (e.emp_id=em.emp_id) 

    when matched then  update set e.emp_name=em.emp_name

    when not matched then insert values (em.emp_id,em.emp_name)

      3.update和insert子句可以加where子句:

    merge into employee e using (select * from  emps) em on (e.emp_id=em.emp_id)

    when matched then  update set e.emp_name=em.emp_name where em.emp_name like ‘%%

    when not matched then insert values (em.emp_id,em.emp_name) where em.emp_name like ‘%%

    即只添加emps表中含有张的数据

      4.update子句后可以跟delete子句删除一些不需要的数据,delete只能和update子句配合使用

    merge into employee e using (select * from  emps) em on (e.emp_id=em.emp_id)

    when matched then  

    update set e.emp_name=em.emp_name delete where e.emp_id=em.emp_id where em.emp_name like ‘%%

    when not matched then insert values (em.emp_id,em.emp_name)

    即不更新emps表中含有张字的数据

  • 相关阅读:
    Spring框架的反序列化远程代码执行漏洞分析(转)
    JVM调优总结(转)
    创造与熟练与微创造
    一次 react-router 中遇到的小坑
    mac中强大的快捷键
    数组思维 -- join的一些用法感悟
    undefined null 与 字符串相加
    mobx中的数组需要注意的地方
    更换鼠标垫(鼠标)的心路历程
    Object.defineProperty 中的 writable 和 configurable 和 enumerable 的理解
  • 原文地址:https://www.cnblogs.com/zijinyouyou/p/5190673.html
Copyright © 2011-2022 走看看