我正在尝试跨两个(inventory
,sold
)MySQL表更新表清单。
假设我们要处理的SKU是BT888-16
UPDATE inventory JOIN sold
ON inventory.sku = sold.sku
SET inventory.quantity = inventory.quantity - sold.quantity
这可以按预期工作,但是
BT888-16
是BT888
sku的产品变体。如何使
BT888-16
中的sold
影响BT888
中inventory
的所有数量行?例如,
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/