3张表  a表字段  qymc   zch nbxh yhid 
      b表字段  qymc  zch nbxh 
      c表字段  yhid  zta.nbxh=b.nbxh   a.yhid=c.yhid
求一个update语句 要求找出a表中zch与b表zch不一样的记录,并且把a表的zch更新为b表的zch 并且要求c表的zt<>'3'

解决方案 »

  1.   

    try:
    Update a a
       Set zch = nvl((Select zch
                       From b
                      Where b.nbxh = a.nbxh
                        And b.zch <> a.zch
                        And Exists (Select 1
                               From c
                              Where a.yhid = c.yhid
                                And c.zt <> '3'))
                    ,a.zch)
      

  2.   

    select * from a,b,c
    where a.nbxh=b.nbxh and a.yhid=c.yhid
    and c.zt<>'3'
    and a.zch<>b.zch
    //要求找出a表中zch与b表zch不一样的记录,并且把a表的zch更新为b表的zch
    //实际上就是把a表的zch更新为b表的zch,因为相同的也更新不变化update a
    set zch=(select b.zch from b where a.nbxh=b.nbxh)
    where exists (select 1 from c where a.yhid=c.yhid and c.zt <>'3')