Oracle更新基于查询

时间:2011-07-28 15:25:35

标签: sql oracle plsql

我有下表:rashodz,naklrashodz,transport,trans_task_load,shipment_plan。
 我需要的是更新tbl:rashodz.id_ship whith tbl:shipment_plan.id_ship如下

rashodz.id2 = shipment_plan.id2
and rashodz.nsthet = naklrashodz.nsthet  
and naklrashodz.nsthet = trans_task_load.nsthet    
and shipment_plan.idts = trans_task_load.idts  

只是不知道该怎么做。
当考虑两个表时没有问题,但是当涉及多个表时如何进行? 我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

您是否提供了更新条件的代码段?

那怎么样:

update rashodz r
set id_ship = nvl(
                   (select id_ship
                   from shipment_plan, 
                        naklrashodz, 
                        transport, 
                        trans_task_load
                   where r.id2 = shipment_plan.id2
                       and r.nsthet = naklrashod.nsthet  
                       and naklrashod.nsthet = trans_task_load.nsthet    
                       and shipment_plan.idts = trans_task_load.idts
                   ), id_ship)

在这种情况下NVL的目的是,如果没有匹配,id_ship将保持与原始值不变。