1093 - You can‘t specify target table ‘xxx‘ for update in FROM clause

错误sql

UPDATE business_provider_order_air_extend poe
JOIN (
    SELECT id 
    FROM business_provider_order_air_extend 
    WHERE provider_order_id IN (
        SELECT provider_order_id 
        FROM business_provider_order_air_extend 
        WHERE provider_id = 2 
        AND fee <> 0
    ) 
    AND amount <> 0 
    AND fee <> 0
) t 
ON poe.id = t.id
SET poe.amount = poe.amount + poe.fee;
 

正确sql

UPDATE business_provider_order_air_extend
SET amount = amount + fee
WHERE id IN (
    SELECT id
    FROM (
        SELECT id 
        FROM business_provider_order_air_extend 
        WHERE provider_order_id IN (
            SELECT provider_order_id 
            FROM business_provider_order_air_extend 
            WHERE provider_id = 2 
            AND fee <> 0
        ) 
        AND amount <> 0 
        AND fee <> 0
    ) AS subquery
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青忆_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值