2015-04-29 31 views
0

我试图更新我选择#1093 - 您不能指定目标表“厘”的更新在FROM子句

记录,但我得到错误#1093,这是我的代码

UPDATE `tabCategories_Products` 
SET`categories` = 'CAT00001' WHERE `categories` = 'CAT00108' 
AND `parent` NOT IN (

SELECT `parent` 
FROM `tabCategories_Products` 
WHERE `categories` != 'CAT00108' 
) 

MYSQL不允许更新选择, 那么这种情况下的解决方案是什么 是否有任何事情喜欢选择更新?

感谢

+0

错误消息来自另一个SQL查询。 – panther

+0

@panther:这个也应该给出同样的错误。 – potashin

+1

它可能是一个拼写错误,但'SET'和下一列之间没有空格试图在它们之间放置空格。 –

回答

0

包装你的查询in子句中的另一个查询:

select t.* 
from (
    select `parent` 
    from `tabCategories_Products` 
    where `categories` != 'CAT00108') 
) t 

此子查询创建一个隐含临时表t,并不能算作是要更新的表。

0

也许做一个left join,然后更新将是一个更好的主意

update tabCategories_Products p1 
left join tabCategories_Products p2 on p1.parent = p2.parent 
and p2.categories <> 'CAT00108' 
set p1.categories = 'CAT00001' 
where 
p1.categories = 'CAT00108' 
and p2.parent is null 
相关问题