多表关联更新,非常实用的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 )