这种写法有没有其它要注意的:update id set (a,b,c)=(select a,b,c from ida where ida.id=id.id) where ……;
刚开始用   update   table   set   ()=(……   where   ……);(……   where   ……)   的后面没有再加加   where   ……,结果把   table   不该修改的记录的相应字段也刷成了   null;   
 写成   update   table   set   ()=(……   where   ……)   where   (a1,   b1)   in   (select   x,   y   from   t1,   t2   where……)又担心如果   xy   组合不唯一的话,会不会有其它问题,或者这种   update   写法有其它要注意的地方。   
 下面是我在   Oracle   Erp   里面写的,用到了这种update,请大侠有空帮忙指正一下,谢谢。     
 --最近成本   tLast==================================================================== 
             UPDATE   SJH_CST_ITEM_COSTS   SJH   SET(/*,*/ 
                      MATERIAL_COST, 
                      MATERIAL_OVERHEAD_COST, 
                      OUTSIDE_PROCESSING_COST, 
                      OVERHEAD_COST                   
                      ,LAST_UPDATED_BY,   LAST_UPDATE_DATE 
                      )   =   ( 
             select 
                   --nvl(   tNow.poNowCst,   cst.MATERIAL_COST   )      现存成本之物料成本, 
                   nvl(poLastCst,   cst.MATERIAL_COST)   最近成本之物料成本, 
                   --nvl(poPreCst,   cst.MATERIAL_COST)         预期成本之物料成本, 
                   cst.material_overhead_cost      物料附加成本, 
                   cst.outside_processing_cost   外协费用, 
                   cst.overhead_cost                                 制造费用                   
                   ,user_id,   sysdate 
             from 
                         CST_COST_TYPES   cType    
             inner   join    
                         cst_quantity_layers   cst   on   cst.Organization_Id   =   cType.Organization_Id 
             left   join   ( 
                   select   t2.organization_id,   t2.Item_Id,   rcv21.po_unit_price   poLastCst 
                   from   rcv_transactions   rcv21 
                   inner   join   po_lines_all   poLine21   on   rcv21.po_line_id   =   poLine21.Po_Line_Id 
                   inner   join   ( 
                         select   rcv22.organization_id,   poLine22.Item_Id,   max(rcv22.creation_date)   lastMaxCreateDate 
                         from   rcv_transactions   rcv22 
                         inner   join   po_lines_all   poLine22   on   rcv22.po_line_id   =   poLine22.Po_Line_Id 
                         where   trunc(   sysdate,    'DD ')   -