Mysql 在多表查询中使用“选择相同的表”更新表
错误 [Err]1093-无法指定要更新的目标表“市场订单” in-FROM从句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
您可以使用
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