mysql - 无法在 FROM 子句中指定更新目标表 'assets'

标签 mysql sql

我的查询。

UPDATE assets SET assets.Amount = (SELECT SUM(assets.Amount) - NEW.Amount FROM assets WHERE NEW.UserId =   assets.UserId and NEW.AccountId = assets.AccountId) AS TmpAssets
WHERE NEW.UserId = assets.UserId and NEW.AccountId = assets.AccountId

最佳答案

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

这是一种使用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;

关于mysql - 无法在 FROM 子句中指定更新目标表 'assets',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26214596/

相关文章:

MySql 全文检索后查询锁

mysql - 无法访问 Docker 容器内的 SQL 数据库

php - JOIN中如何返回主表内容?

php - PDO 绑定(bind)问题

mysql - django 中的运行时警告

php - 如果 MySQL 连接或数据库的链接有错误,则打印

SQL - 查询拆分原始排序

sql - 在给定日期之间获取最高分条目

sql - 如何更改 magento 中的 base_url。因为我的网站在我的 magento 管理员上更改后消失了

mysql - 子表在一对多更新过程中未更新