merge into TableA x using
(select a.userid,a.time,b.fee from TableB a left join TableC b on a.userid = b.userid
union
select c.userid,d.time,c.fee from TableC c ,TableB d where c.userid = d.userid) e
on x.userid = e.userid
when matched then update set x.time = e.time , x.fee = e.fee 
when not matched then insert (userid,time,fee) values (e.userid,e.time,e.fee)

解决方案 »

  1.   

    用循环的话试试这个:
    BEGIN
      FOR CUR_TableA IN (SELECT A.userid, B.time, C.fee
                           FROM TableA A
                           LEFT JOIN TableB B
                             ON A.userid = B.userid
                           LEFT JOIN TableC c
                             ON a.userid = c.userid) LOOP
        UPDATE TableA
           SET time = CUR_TableA.time, fee = CUR_TableA.fee
         WHERE userid = CUR_TableA.userid;
      END LOOP;
    END;