2015-06-22 62 views
0

我試圖在子查詢中引用a.pointer,但它看起來像mysql不允許引用子查詢之外的字段。子組之外的引用字段(Where子句中的未知列)

UPDATE order_items AS a 

SET a.id_parent = (

SELECT id FROM((

select id from order_items as b where (b.pointer = a.pointer) and (b.id_parent = 0)) 

)x) 

WHERE a.id_parent > 9999 

什麼是最好的方式來訪問子查詢中的a.pointer?

回答

0

看起來你正在嘗試做自連接在這裏;像

UPDATE order_items a 
    JOIN order_items b ON b.pointer = a.pointer AND b.id_parent = 0 
SET a.id_parent = b.id 
WHERE a.id_parent > 9999; 
+0

工作!非常感謝你 –

0

嘗試使用加入這個

UPDATE order_items as a 
SET a.id_parent = b.id  
JOIN(select id from order_items as c where c.id_parent = 0) b ON b.pointer = a.pointer 
WHERE a.id_parent > 9999 
+0

[錯誤] 1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊,以便在'FROM order_items AS'附近使用正確的語法'JOIN(從order_items選擇id作爲b,其中b.id_parent ='在第3行 –

+0

現在您可以嘗試 –

+0

[Err] 1064 - 您的SQL語法錯誤;查看與您的MySQL服務器版本相對應的手冊,以在'JOIN(從b_id = 0選擇id,b.id_parent = 0)ON b.pointer = a時使用正確的語法。 po'在線3 –

0
UPDATE a 
SET a.id_parent = b.id 
from order_items a join order_items b 
on (a.pointer = b.pointer) 
where b.id_parent = 0 and a.id_parent > 9999 

您可以使用自如上加盟。

謝謝