mysql - 如何修复表在 MySQL 8.2 中指定了两次?
问题描述
这是我的查询:
UPDATE order_product
SET amount = coalesce(
(
SELECT amount_origin + (SELECT sum(amount_to_change)
FROM order_product_edits
WHERE order_product_id = NEW.order_product_id
)
FROM order_product
WHERE id = NEW.order_product_id
)
, 0)
它在我的本地计算机(MySQL 8.3)上运行良好..但它在服务器上引发此错误(MySQL 8.2):
表被指定了两次,既作为“更新”的目标,又作为 mysql 中数据的单独源
知道如何解决吗?
解决方案
问题是嵌套的相关子句。我认为你不需要它:
UPDATE order_product op
SET amount = COALESCE(op.amount_origin + (SELECT sum(ope.amount_to_change)
FROM order_product_edits ope
WHERE ope.order_product_id = op.order_product_id
), 0
)
WHERE op.id = NEW.order_product_id;
我很惊讶默认值是0
而不是op.amount_origin
.
推荐阅读
- csv - Spark Write csv - 时间戳格式问题
- css - 如何更改 ionic 3 选项卡的最大宽度?
- java - Hibernate 异常:@OneToMany 或 @ManyToMany 针对未映射的类 [java.util.List]
- c++ - 为什么按值传递 QStringView 比引用 const 更快?
- amazon-ec2 - 分配给节点辅助接口的 kubernetes 服务外部 IP
- python - Pyinstaller Qt5 应用程序无法在 Windows 10 中启动
- kubernetes - 有没有办法将 openebs 副本限制到 k8s 集群中的特定节点?
- c# - 无法在 http://localhost 上启动驱动程序服务
- multithreading - boost::python 线程通过 python 暂停和恢复 c++ 函数
- python - 有什么方法可以将 seaborn 中的颜色条(cbar)更改为图例(对于二进制热图)?