ORACLE UPDATE 多表关联的update语句

多表关联更新,非常实用的SQL实现

update tr_plan_2_u a
 set hash_value=( select hash_value from tr_plan_2 where rowid='AAAbYGAAEAAEIpDAAB') 
where exists (select 1 from tr_plan_2 b where 
 a.p_year=b.p_year and a.p_month=b.p_month and a.erp_id=b.erp_id
and b.rowid='AAAbYGAAEAAEIpDAAB') 

这段代码的好处是采用rowid更新子表,而不直接用子表的多字段主键,简化了参数量。

还可以多字段更新,下面示例来自 https://blog.csdn.net/hgffhh/article/details/84192260

   update customers a  
   set    (city_name,customer_type)=(select b.city_name,b.customer_type 
                                     from   tmp_cust_city b 
                                     where  b.customer_id=a.customer_id)
   where  exists (select 1 
                  from   tmp_cust_city b
                  where  b.customer_id=a.customer_id
                 )

 

posted @ 2021-10-04 21:15  notis  阅读(3143)  评论(1编辑  收藏  举报