oracle update left join 关联更新或删除解决方案

根据业务需求,需要从其他表的条件来更新本表的某一字段数据,以下是我的解决方案,可能是网上的其它方式有所不同。

oracle中直接执行的语句如下:

begin for fn in(
select t.id,t.shbj,r.shbj as shbj1 from mj_ry_sg t left join mj_ry r on t.zgh=r.zgh where t.yxbj='1' and r.yxbj='1' and r.shbj is not null
)
loop
  update mj_ry_sg t set t.shbj=fn.shbj1 where t.id = fn.id;
end loop;
end;

从查询语句中关联查询出id,将要更新的字段,覆盖值的字段,然后循环更新就可以了。

这样的方式由于在数据库中执行所以速度还可以。

当然,在代码中传入这个语句也是可以顺利执行的,以Java版本为例:

        String sql = "begin for fn in("
                + "select t.id,t.shbj,r.shbj as shbj1 from mj_ry_sg t left join mj_ry r on t.zgh=r.zgh where t.yxbj='1' and r.yxbj='1' and r.shbj is not null "
                + ") loop  update mj_ry_sg t set t.shbj=fn.shbj1 where t.id = fn.id;  end loop; end;";
        Db.update(sql);

经测试,可以正常执行。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值