【问题标题】:You can't specify target table (UPDATE on SELECT Query )?您不能指定目标表(SELECT Query 上的 UPDATE )?
【发布时间】: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' 进行更新

【问题讨论】:

标签: mysql database


【解决方案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://stackoverflow.com/a/33607415/272885

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2015-07-10
    • 2011-08-14
    相关资源
    最近更新 更多