SQL UPDATE statement with WHERE EXISTS

前端 未结 6 908
天涯浪人
天涯浪人 2021-02-07 10:09

Im trying to write a query that updates a date only if the group im updating has a LINE_CD of 50. Would i do it like this?

UPDATE EMPLOYER_ADDL  
SET EMPLOYER_A         


        
6条回答
  •  耶瑟儿~
    2021-02-07 10:50

    I believe exists requires a wildcard:

    UPDATE EMPLOYER_ADDL  
    SET EMPLOYER_ADDL.GTL_UW_APPRV_DT = EMPLOYER_ADDL.DNTL_UW_APPRV_DT 
    WHERE EXISTS
        ( 
          SELECT *
          FROM EMP_PLAN_LINE_INFO
          Where EMP_PLAN_LINE_INFO.GR_NBR = EMPLOYER_ADDL.GR_NBR and
           EMP_PLAN_LINE_INFO.LINE_CD = 50
         )
    

    I prefer using IN though. Some argue that it can be slower, but I have found the SQL optimizer in 2005 and higher make IN work the same as EXISTS if the field is a non-null field.

    UPDATE EMPLOYER_ADDL  
    SET EMPLOYER_ADDL.GTL_UW_APPRV_DT = EMPLOYER_ADDL.DNTL_UW_APPRV_DT 
    WHERE EMPLOYER_ADDL.GR_NBR IN
        ( 
          SELECT EMP_PLAN_LINE_INFO.GR_NBR
          FROM EMP_PLAN_LINE_INFO
          Where EMP_PLAN_LINE_INFO.LINE_CD = 50
         )
    

提交回复
热议问题