繁体   English   中英

在sybase中使用自我加入进行更新

[英]Update with self join in sybase

我有一张桌子如下

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

我想将ACICY_NM更新为COCI_TYPE = 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

我正在使用以下更新查询

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 )

它按预期工作,但我不想再次使用相同的表和agian,因为这可能会导致性能问题。

任何更好的解决方案来更新列?

谢谢,Dhiraj

尝试这种方式:

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 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM