您不能指定目标表(SELECT Query 上的 UPDATE )?
Posted
技术标签:
【中文标题】您不能指定目标表(SELECT Query 上的 UPDATE )?【英文标题】:You can't specify target table (UPDATE on SELECT Query )? 【发布时间】:2020-06-16 21:56:10 【问题描述】:查询:
UPDATE `master_customer`
SET `customer_group_id` = 19
WHERE `customer_code` IN( SELECT *
FROM `master_customer` a,
`master_customer_group` b
WHERE a.`customer_group_id` = b.`id`
AND b.`id` = 8);
结果:
查询:
UPDATE `master_customer` SET `customer_group_id` = 19 WHERE `customer_code` IN( SELECT a.`customer_code` FROM `master_customer` ...
错误代码:1093 您不能在 FROM 子句中指定目标表 'master_customer' 进行更新
【问题讨论】:
你可以在这里看到dofactory.com/sql/subquery 【参考方案1】:这是 mysql 的一项功能。您可以通过将子查询包装到另一个子查询来解决它:)
UPDATE `master_customer` SET `customer_group_id` = 19 WHERE `customer_code` IN(
SELECT x.customer_code FROM (
SELECT a.customer_code FROM
`master_customer` a,
`master_customer_group` b
WHERE
a.`customer_group_id` = b.`id`
AND b.`id` = 8) AS x
)
https://***.com/a/33607415/272885
【讨论】:
以上是关于您不能指定目标表(SELECT Query 上的 UPDATE )?的主要内容,如果未能解决你的问题,请参考以下文章