影响MySQL中所有关键字行的产品变量
我正在尝试跨两个(影响MySQL中所有关键字行的产品变量,mysql,sql,Mysql,Sql,我正在尝试跨两个(inventory,sall)MySQL表更新表库存 假设我们正在处理的sku是BT888-16 UPDATE inventory JOIN sold ON inventory.sku = sold.sku SET inventory.quantity = inventory.quantity - sold.quantity 这与预期一样有效,但BT888-16是BT888sku的一种产品变体 如何使salled中的BT888-16影响inventory中的BT888的所有数
inventory
,sall
)MySQL表更新表库存
假设我们正在处理的sku是BT888-16
UPDATE inventory JOIN sold
ON inventory.sku = sold.sku
SET inventory.quantity = inventory.quantity - sold.quantity
这与预期一样有效,但BT888-16
是BT888
sku的一种产品变体
如何使salled
中的BT888-16
影响inventory
中的BT888
的所有数量行
例如,
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组。这似乎很困难,但您可以明确地将逻辑放入:
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组。仅在SKU的前5个字母上加入,按SKU的前5个字母汇总销售金额分组。是的,但并非所有SKU都有5个字母。希望有一种方法可以根据SKU的精确匹配减去任何变化。但是,所有产品变体都有一个-***。仅在sku的前5个字母上加入,按sku的前5个字母对销售金额分组进行汇总。是的,但并非所有sku都有5个字母。希望有一种方法可以根据SKU的精确匹配减去任何变化。不过,所有的产品变体都有一个-***附加在它上面。这很酷,我不知道你能做到;顺便说一句,你忘了一个括号。@jhaagsma,如果你有编辑权限,那么请继续编辑答案,我相信Gordon不会介意的all@Rahul对不起,我没有意识到我有编辑权限!谢谢你的提醒,很有趣。但这需要我在查询的每个人中手动输入SKU?这将变得不可收拾。是否可以执行类似“inventory.sku-%”之类的
操作,这样我就可以通过编程来完成此操作?谢谢您的编辑。我会摆弄这个方法,谢谢你给我指明了正确的方向!那很酷,我不知道你能做到;顺便说一句,你忘了一个括号。@jhaagsma,如果你有编辑权限,那么请继续编辑答案,我相信Gordon不会介意的all@Rahul对不起,我没有意识到我有编辑权限!谢谢你的提醒,很有趣。但这需要我在查询的每个人中手动输入SKU?这将变得不可收拾。是否可以执行类似“inventory.sku-%”之类的操作,这样我就可以通过编程来完成此操作?谢谢您的编辑。我会摆弄这个方法,谢谢你给我指明了正确的方向!