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

    原文:https://www.cnblogs.com/gudaozi/p/8618322.html

    不多说了,我们来做实验吧。

    创建如下表数据

    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;
    本博客为记录本人遇到问题时所找到的解决方案,且均经过本人亲测可用,如有侵权请联系添加来源或删除文章,谢谢。
  • 相关阅读:
    【js】右下角浮动窗口
    malefile
    跟我一起学习VIM
    Linux服务器开发初步
    如何学习Linux
    什么是Java序列化?如何实现序列化?
    java微信工众号开发
    史上最全最强SpringMVC详细示例实战教程
    Hibernate注解方法使用总结
    Hibernate注解
  • 原文地址:https://www.cnblogs.com/heymonkey/p/14356824.html
Copyright © 2011-2022 走看看