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;
  • 相关阅读:
    Java基础00-循环语句7
    Java基础00-分支语句6
    Java基础00-数据输入5
    Java基础00-运算符4
    Java基础00-基础语法3
    Java基础00-第一个程序2
    第十四题
    第十三题
    第十二题
    第十题
  • 原文地址:https://www.cnblogs.com/duanjt/p/10945311.html
Copyright © 2011-2022 走看看