原来的SQL语句
UPDATE product p
SET p.price_strategy = 'FREE'
WHERE
p.id IN (
SELECT
p1.id
FROM
product p1
LEFT JOIN price_info price ON p1.id = price.product_id
WHERE
p1.tag = 1
AND price.price_strategy = 'FREE'
);
执行时,报[Err] 1093 - You can't specify target table 'product' for update in FROM clause
原因:“In general, you cannot modify a table and select from the same table in a subquery.”
如下,加一层嵌套即可
UPDATE product p
SET p.price_strategy = 'FREE'
WHERE
p.id IN (
SELECT
temp.id
FROM
(
SELECT
p1.id
FROM
product p1
LEFT JOIN price_info price ON p1.id = price.product_id
WHERE
p1.tag = 1
AND price.price_strategy = 'FREE'
) temp
);