[英]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.