这是您对原始查询进行的相应修改:
select tt1.id, tt1.amount, tt1.AccountId, (tt1.amount-ifnull(tt2.amount, 0)) as deltafrom trans tt1 left outer JOIN trans tt2 on tt1.accountid = tt2.accountid and month(tt1.date1)-month(tt2.date1)=1;
月比较从移动
where到
on,这使得一个差
left join,并且
tt2.amount被替换为
ifnull(tt2.amount,0)。
UPDATe
脚本 的版本:
update tt1set delta = (tt1.amount-ifnull(tt2.amount, 0))from trans tt1 left outer JOIN trans tt2 on tt1.accountid = tt2.accountid and month(tt1.date1)-month(tt2.date1)=1;
上述更新的正确MySQL语法实际上应为:
update trans tt1 left outer JOIN trans tt2 on tt1.accountid = tt2.accountid and month(tt1.date1)-month(tt2.date1)=1 set tt1.delta = (tt1.amount-ifnull(tt2.amount, 0));
(感谢 @pinkb 。)



