如何修复MySQL 8.2中两次指定的表?
我的问题是:如何修复MySQL 8.2中两次指定的表?,mysql,sql,Mysql,Sql,我的问题是: UPDATE order_product SET amount = coalesce( ( SELECT amount_origin + (SELECT sum(amount_to_change) FROM order_product_edits
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中数据的单独源
知道如何修复它吗?来自T-sql世界,我建议您使用一个临时表或表变量,这样您就可以在key、updated value的思想中存储一些内容,一旦填充了这些内容,您就可以在更新查询中使用它们将值设置为更新值 问题在于嵌套的correlation子句。我想你不需要它:
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\u origin
Duplicate?可能重复“它在我的本地计算机(MySQL 10.3)上运行良好…但它在服务器(MySQL 10.2)上抛出此错误:”MySQL 10?MySQL的最大版本是8!你在这里可能是指MariaDB 10。@RaymondNijland Oh我是说8.2
和8.3
你在使用触发代码吗?新建。
语法表明您正在使用触发器。。如果是,则发布完整的触发代码。。如果不是,你的语法是完全错误的,然后我建议你阅读