2016-02-27 128 views
0

我有一張臨時表,其中包含我的拖放託運人的手頭庫存,我想用它來更新我的woocommerce網站。我使用供應商的SKU作爲關鍵,但woocommerce已將其隱藏起來,因此我必須在連接上使用子查詢。使用子查詢和If語句更新查詢

update yra_postmeta 
    join supplier_stock on 
     (select meta_value from yra_postmeta where meta_key='_supplier_sku') = supplier_stock.supplier_sku 
set yra_postmeta.meta_value = CASE WHEN supplier_stock.stock < 1 AND yra_postmeta.meta_key = '_stock_status' THEN 'outofstock' 
         WHEN supplier_stock.stock >=1 AND yra_postmeta.meta_key = '_stock_status' THEN 'instock' 
         end 

我收到「錯誤代碼:1093。你不能在FROM子句指定目標表‘yra_postmeta’更新」,這似乎是相當普遍,似乎有一些解決方案出來的狂野,但我似乎無法讓這些特定查詢中的任何一個工作?任何想法如何使這項工作?

回答

0

我不確定這是否可行,所以你會想要測試它。但是你可以改變連接,以便它使用一個和。那麼你不會有對你編輯表格的循環引用。

UPDATE yra_postmeta 
JOIN supplier_stock ON meta_key = '_supplier_sku' 
    AND meta_value = supplier_stock.supplier_sku 

SET yra_postmeta.meta_value = CASE 
    WHEN supplier_stock.stock < 1 
     AND yra_postmeta.meta_key = '_stock_status' 
     THEN 'outofstock' 
    WHEN supplier_stock.stock >= 1 
     AND yra_postmeta.meta_key = '_stock_status' 
     THEN 'instock' 
    END