2016-02-27 73 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