zoukankan      html  css  js  c++  java
  • ORACLE 两表关联更新三种方式

    创建如下表数据

    select * from t1 ;

    select * from t2;

    现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致。

    方式1,update

    常见陷阱:

    UPDATE T1 
    SET T1.FMONEY = (select T2.FMONEY from t2 where T2.FNAME = T1.FNAME)

    执行后T1结果如下:

    有一行原有值,被更新成空值了。

    正确写法:

    UPDATE T1 
    SET T1.FMONEY = (select T2.FMONEY from t2 where T2.FNAME = T1.FNAME)
    WHERE EXISTS(SELECT 1 FROM T2 WHERE T2.FNAME = T1.FNAME);

    方式2:内联视图更新

    UPDATE (
    select t1.fmoney  fmoney1,t2.fmoney  fmoney2 from t1,t2 where t1.fname = t2.fname
    )t
    set fmoney1 =fmoney2;

    方式3:merge更新

    merge into t1
    using (select t2.fname,t2.fmoney from t2) t
    on (t.fname = t1.fname)
    when matched then 
      update  set t1.fmoney = t.fmoney;
  • 相关阅读:
    技术笔记3
    技术笔记2 jetty jboss
    技术笔记1前台
    日常笔记4
    日常笔记3
    日常笔记2
    日常笔记
    C语言——结构体
    用Java原子变量的CAS方法实现一个自旋锁
    Java中处理Linux信号量
  • 原文地址:https://www.cnblogs.com/tdskee/p/11014443.html
Copyright © 2011-2022 走看看