【发布时间】:2015-04-13 00:36:54
【问题描述】:
我想通过在 where 子句中使用子查询来更新表,但出现异常“您无法指定目标表 'catalog_category for update in FROM 子句'”。这是我的查询:
update catalog_category set `status` = "inactive"
where id_catalog_category in (
SELECT id_catalog_category
FROM catalog_category t1 where (SELECT status
FROM catalog_category t2
WHERE t2.lft < t1.lft AND t2.rgt > t1.rgt
ORDER BY t2.rgt-t2.lft ASC limit 1) = 'active' and status = 'inherited_inactive')
有什么办法可以修复这个错误吗?
【问题讨论】:
-
@starko 我不认为这是问题的重复,因为这里它是子选择和更新中的同一个表,而在你的问题中两者是不同的。
-
我会将其拆分为 2 个查询:一个用于选择 ID,第二个用于更新。
-
怎么可能 - status='active' 和 status='inherited_inactive'?总是假的。
-
@Sirko 是的,我们可以通过将其拆分为 2 个查询来轻松解决它。我问这个问题是因为我的要求需要将它合并到 1 个查询中。
标签: mysql