各位乡亲父老,欢迎大家来捧场!江湖卖艺,生活不易!技艺交流(投稿、打广告、链接交换),请搓这里

  ORACLE两表关联更新三种方式 (注意更新中的陷阱)

2022/2/15 10:46:48管理员 1824
- N +
不多说了,我们来做实验吧。

创建如下表数据

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 t2 t1
using (select t2.fname,t2.fmoney from t2) t
on (t.fname = t1.fname)
when matched then
    update    set t1.fmoney = t.fmoney;
0人赞 分享 二维码 赏一个
选择分享方式
移步手机端
文章手机二维码

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
选择打赏方式
微信赞助

打赏