2014-10-06 26 views

回答

1

MySQL不允许您使用updatedelete子查询中正在更新的表。解决这个问题很容易。

下面是使用update/join一种方法:

UPDATE assets a JOIN 
     (select sum(a.Amount) as sumamount, a.UserId, a.AccountId 
     from assets a 
     where NEW.UserId = a.UserId and NEW.AccountId = a.AccountId 
     group by a.UserId, a.AccountId 
     ) anew 
     on NEW.UserId = a.UserId and NEW.AccountId = a.AccountId 
    SET a.Amount = anew.sumamount - new.Amount; 
+0

尼斯查询,但我有一个问题。我在桌上有两笔记录,金额分别为20和30,两笔金额随新记录更改,我需要总计两笔记录(50),然后更改。非常需要帮助 – 2014-10-06 11:04:12

+0

@PutraLZendrato。 。 。然后更改子查询以汇总所需的值。这个版本似乎正在做你正在试图用你的问题查询。 – 2014-10-06 11:18:57

0

是的,你不能这样做,因为你在更新它时从表中进行子选择。 你可以做的最好的是创建一个tmp表并从那里执行子查询。

0

试试这个:

UPDATE assets SET assets.Amount = (select temp.val from (SELECT (SUM(assets.Amount) - 
NEW.Amount) val from assets WHERE 
NEW.UserId = assets.UserId and NEW.AccountId = assets.AccountId) temp) 
WHERE NEW.UserId = assets.UserId and NEW.AccountId = assets.AccountId ; 
相关问题