我正在尝试跨两个(inventorysold)MySQL表更新表清单。

假设我们要处理的SKU是BT888-16

UPDATE inventory JOIN sold
ON inventory.sku = sold.sku
SET inventory.quantity = inventory.quantity - sold.quantity


这可以按预期工作,但是BT888-16BT888 sku的产品变体。

如何使BT888-16中的sold影响BT888inventory的所有数量行?

例如,BT888-16应该影响所有带有短语BT888的数量行吗? BT888 BT888-01 BT888-02 BT888-03-一直到BT888-***

最佳答案

这似乎很麻烦,但是您可以将逻辑明确地放入:

UPDATE inventory i JOIN
       sold s
       ON i.sku = s.sku or
          (s.sku = 'BT888-16' and i.sku like 'BT888-%')
    SET i.quantity = i.quantity - s.quantity;


编辑:

我的意思是,您可以开始玩以下游戏:

UPDATE inventory i JOIN
       sold s
       ON i.sku = s.sku or
          (s.sku like '%-16' and i.sku like concat(substring_index(s.sku, '-', 1), '-%')
    SET i.quantity = i.quantity - s.quantity;


但是,我认为您需要在表中为您做映射的列。也就是说,您需要能够定义“相互”影响的SKU ID组。

关于mysql - 产品变体影响MySQL中带有关键字的所有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40183777/

10-13 07:41