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
)
)
错误
[Err] 1093 - 您无法指定目标表'market_order'进行更新 在FROM子句中
答案 0 :(得分:0)
您可以使用UPDATE..JOIN
来代替:
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
MySQL不允许在WHERE
子句中使用目标表中的select。
此外 - 使用LEFT JOIN
时,只应在ON()
子句中指定右表上的过滤器。
答案 1 :(得分:0)
您可以尝试在1个查询中进行此操作:
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