zoukankan      html  css  js  c++  java
  • Oracle 使用MERGE INTO 语句更新数据

    转http://www.cnblogs.com/jiangguang/archive/2012/12/24/2830581.html

    /*Merge into 详细介绍
    MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。
    通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,
    连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。
    这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。
    */
    /*语法:
    MERGE [INTO [schema .] table [t_alias]
    USING [schema .] { table | view | subquery } [t_alias]
    ON ( condition )
    WHEN MATCHED THEN merge_update_clause
    WHEN NOT MATCHED THEN merge_insert_clause;
    */

    merge into users

    using doctor

    on (users.user_id = doctor.doctorid)

    when matched then

      update set users.user_name = doctor.doctorname      --update 和 insert 语句均可以简写,省略 表名等

    when not matched then

      insert

      values

        (doctor.doctorid,

         doctor.doctorid,

         '8736F1C243E3B14941A59FF736E1B5A8',

         doctor.doctorname,

         sysdate,

         'T',

         ' ',

         doctor.deptid,

         'b319dac7-2c5c-496a-bc36-7f3e1cc066b8');

    限定条件位置:

    merge into MDC_DiabetesRecord  a
    using EHR_HealthRecord b
    on (a.empiid = b.empiid  and  a.phrid='3301850040200000' ) --限制条件 a.phrid='3301850040200000'  可以 置于 condition 处
    when matched then
      update set a.status = '9' ;  
     
       merge into MDC_DiabetesRecord  a
    using EHR_HealthRecord b
    on (a.empiid = b.empiid  )
    when matched then
      update set a.status = '9'  where  a.phrid='3301850040200000'  ;  --可以 置于 update 处

  • 相关阅读:
    MySQL
    docker-compose部署redis及RabbitMq
    docker-compose部署nacos单机版(简洁优化版)
    用U盘启动安装CentOS的详解
    mysql 获取id最大值
    JAVA编码-- 比较两个BigDecimal大小(重要)
    MYSQL如何把年月日3个int类型的字段拼接成日期类型,并按照日期段进行查询
    Mysql如何根据年月日来查询数据
    springboot 调用redisTemplate时总是为null的解决方法
    shell中read用法
  • 原文地址:https://www.cnblogs.com/chenyj/p/6133808.html
Copyright © 2011-2022 走看看