Mysql 在多表查询中使用“选择相同的表”更新表

Mysql 在多表查询中使用“选择相同的表”更新表,mysql,Mysql,错误 [Err]1093-无法指定要更新的目标表“市场订单” in-FROM从句 您可以使用UPDATE..JOIN来执行此操作: UPDATE market_order SET is_wechat = 1 WHERE id IN ( SELECT a.id FROM market_order a LEFT JOIN market_order_detail b ON a.id = b.orde

错误

[Err]1093-无法指定要更新的目标表“市场订单” in-FROM从句


您可以使用
UPDATE..JOIN
来执行此操作:

UPDATE market_order
SET is_wechat = 1
WHERE
    id IN (
        SELECT
            a.id
        FROM
            market_order a
        LEFT JOIN market_order_detail b ON a.id = b.order_id
        WHERE
            b.template_id IN (
                SELECT
                    id
                FROM
                    market_template
                WHERE
                    core_id = 2
                AND is_wechat = 1
            )
    )
MySQL不允许在
WHERE
子句中使用目标表中的select


另外-当使用
左联接时
,应仅在
on()
子句内指定右表上的筛选器。

您可以尝试在1个查询内进行此操作:

UPDATE market_order a
JOIN market_order_detail b
 ON(a.id = b.order_id)
JOIN market_template t
 ON(b.template_id = t.id)
SET a.is_wechat = 1
WHERE t.core_id = 2 AND t.is_wechat = 1

“mod”不能短~~它也解决了我的问题,非常感谢。它现在可以工作了,非常感谢!
update market_order mo set is_wechat = 1 left join 
market_order_detail mod on mo.id = mod.order_id inner join 
market_template mt on mt.id = mod.teplate_id where mt.core_id = 2
and mt.is_wechat = 1