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
)
loopupdate 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);

经测试,可以正常执行。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部