2013-03-29 29 views
1

加入我有一個表,如下更新與自我在Sybase

COAR_ID COCE_ID COCI_TYPE BRKR_NM AGNCY_NM 
123  123  P  abc 
123  231  G     def 
123  331  G     ghi 

我想爲COCI_TYPE更新AGNCY_NM = P其中,max(COCE_ID)和COCI_TYPE = 'G'

所以輸出應該

COAR_ID COCE_ID COCI_TYPE BRKR_NM AGNCY_NM 
123  123  P  abc  ghi 
123  231  G     def 
123  331  G     ghi 

IM使用下面的更新查詢是

UPDATE Table 
    SET 
     AGNCY_NM = BB.AGNCY_NM 
     ,UPDT_NBR = 3 
    FROM 
     Table AA 
     ,Table BB 
    WHERE 
     AA.COAR_ID=BB.COAR_ID 
     AND AA.COCI_TYPE='P' 
     AND BB.AGNCY_NM <> '' 
     AND AA.UPDT_NBR <> 3 
     AND BB.COCE_ID=(SELECT MAX(CC.COCE_ID) FROM Table CC WHERE CC.COAR_ID=BB.COAR_ID) 

它正在按預期工作,但我不想再次使用相同的表格,因爲它可能會導致性能問題。

任何更好的解決方案來更新列?

感謝, DHIRAJ

回答

1

試試這個方法:

UPDATE TAB 
    SET 
     AGNCY_NM = BB.AGNCY_NM 
     ,UPDT_NBR = 3 
    FROM 
     TAB BB 
    WHERE 
     TAB.COAR_ID=BB.COAR_ID 
     AND TAB.COCI_TYPE='P' 
     AND BB.AGNCY_NM <> '' 
     AND TAB.UPDT_NBR <> 3 
     AND BB.COCE_ID=(SELECT MAX(CC.COCE_ID) FROM TAB CC WHERE CC.COAR_ID=BB.COAR_ID)