2015-04-29 35 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 
相關問題