现在在有三张表,分别是:
表:T_ORG_HIERENTITY
字段:COSTCENTER,HIERID
表:T_ORG_HIEREMPLYEE
字段:HIERID, Employeeid
表:T_OLS_USER
字段:USER_COSTID, USER_CODE对应关系:
T_ORG_HIEREMPLYEE.HIERID对应T_ORG_HIERENTITY.HIERID
T_OLS_USER.USER_CODE对应T_ORG_HIEREMPLYEE.Employeeid
T_OLS_USER.USER_COSTID对应T_ORG_HIERENTITY.COSTCENTER
现在要求:
更新T_OLS_USER.USER_COSTID中与T_ORG_HIERENTITY.COSTCENTER不一致的数据,如果不一致,则T_OLS_USER.USER_COSTID=T_ORG_HIERENTITY.COSTCENTER
请帮忙写一个SQL语句

解决方案 »

  1.   


    UPDATE T_OLS_USER A
    SET A.USER_COSTID= (SELECT B.COSTCENTER 
                        FROM  T_ORG_HIERENTITY B, T_ORG_HIEREMPLYEE C 
                        WHERE A.USER_CODE=C.Employeeid AND B.HIERID=C.HIERID)
    WHERE EXISTS (SELECT 1 
                  FROM T_ORG_HIERENTITY B, T_ORG_HIEREMPLYEE C
                  WHERE A.USER_CODE=C.Employeeid AND B.HIERID=C.HIERID
                        AND A.USER_COSTID <> B.COSTCENTER)
      

  2.   

    (T_ORG_HIEREMPLYEE) - HIERID - (T_ORG_HIERENTITY)
    (T_ORG_HIEREMPLYEE) - USER_CODE - (T_OLS_USER) - USER_COSTID - (T_ORG_HIERENTITY)
    其中他们之间的数量对应关系怎样?如果出现了更新多条数据,那么更新为哪条数据?