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表中含有张字的数据

  • 相关阅读:
    redis缓存问题解决方案
    JVM 2-垃圾收集及内存分配策略
    JVM 1-内存管理
    mysql数据库基础
    事务学习
    使用redis分布式锁来解决集群项目的定时任务冲突问题
    Spring AOP学习
    Spring IOC
    java语言基础7--线程相关类
    多重背包的二进制优化——DP
  • 原文地址:https://www.cnblogs.com/zijinyouyou/p/5190673.html
Copyright © 2011-2022 走看看