2017-07-19 57 views
0
UPDATE product 
SET product_layout='068' 
WHERE (sku IN (SELECT DISTINCT master_sku FROM product)) 
    AND (master_sku IS NOT NULL AND master_sku !='') 
    AND sku LIKE 'IP-283-%'; 

它給我這個錯誤:MySQL的問題「錯誤代碼:1093您不能指定目標表‘產品’在FROM子句更新」

Error Code: 1093. You can't specify target table 'product' for update in FROM clause

這個SELECT語句是給我什麼我需要更新到product_layout = '069'

SELECT id, sku, master_sku 
FROM product 
WHERE (sku NOT IN (SELECT DISTINCT master_sku FROM product)) 
    AND (master_sku IS NULL OR master_sku = '' AND sku LIKE 'IP-%'); 

SO我去到Excel並創建一個CONCAT更新產品設置product_layout = '069',其中SKU中(上述CONCAT清單);

任何人都可以幫忙嗎?

謝謝!

+0

https://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-update-in-from-clause –

回答

0
UPDATE product AS p, 
(
    SELECT p.sku 
    FROM product AS p 
    WHERE (sku not in (select distinct master_sku from product) and (master_sku is null or master_sku ='')) and sku like 'IP-%') AS newp 
    set product_layout='069' 
    WHERE p.sku=newp.sku 
+0

授予這是我的另一個問題...我只能使用它,但不知道如何進行更新聲明。 ---從產品中選擇sku(sku不在(從產品中選擇不同的master_sku)和(master_sku爲null或master_sku =''))和sku(如'IP-%'); – Boris

+0

感謝您使用此代碼段,它可能會提供一些即時幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

相關問題