您不能指定目标表(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 )?的主要内容,如果未能解决你的问题,请参考以下文章

删除 - 我不能指定目标表?

为 SQLITE 指定 SELECT 超时

Big Query 在从一个表插入到另一个表时指定 _PARTITIONTIME

Power Query 表结果与接收器上的动态名称

具有目标表的bq查询的定价

#1093 - 您不能在 FROM 子句中指定目标表 'comments' 进行更新