sql多表关联更新出现重复计算?

来源:百度知道 编辑:UC知道 时间:2024/06/02 16:29:58
SQLKC="update KC,CK set KC.SL=KC.SL+CK.SL,KC.RMBZJ=KC.RMBZJ+CK.RMBZJ where CK.JH=KC.JH AND CK.XH=KC.XH AND CK.LX=KC.LX AND CK.ZT=KC.ZT AND CK.RMBDJ=KC.RMBDJ"
conn.execute(SQLKC)

结果KC.SL和KC.RMBZJ增加部分出现重复计算(KC.SL=2,CK.SL=1;更新结果KC.SL=4而不是3?为什么?哪里错了?大虾门救急!!!
表KC中有字段SL,RMBZJ,JH,XH,LX,ZT,RMBDJ
表CK也中有字段SL,RMBZJ,JH,XH,LX,ZT,RMBDJ
若表KC和表CK中JH,XH,LX,ZT,RMBDJ值相同,则用KC.SL+CK.SL更新KC.SL

update kc
set SL=SL+(select SL from ck where where CK.JH=KC.JH AND CK.XH=KC.XH AND CK.LX=KC.LX AND CK.ZT=KC.ZT AND CK.RMBDJ=KC.RMBDJ),
RMBZJ=RMBZJ++(select RMBZJ from ck where where CK.JH=KC.JH AND CK.XH=KC.XH AND CK.LX=KC.LX AND CK.ZT=KC.ZT AND CK.RMBDJ=KC.RMBDJ)
where 1=1;
从来没用过update 多张数据表,所以只能推荐你用上面这个sql试一下,感觉可能和update两张表有关系,update了两次

我不了解你的表结构,但是,我猜想应该有2个可能
1.你的同时更新2表的时候产生了一个异常
2.你的where条件中有问题