[英]Update multiple rows with one value and divide it to the different row in single SQL query
基本上我有两个表 itemTable 和 stockTable,每次添加库存时,我都会获取 itemId 的外键并将其与数量一起添加到 stockTable 中。
我想每次客户购买产品时更新 stockTable 中的库存数量。
问题:例如,客户将购买 7 件衬衫:所以首先将更新 STOCKID (3) QUANTITY OF 4 SECOND 将更新 STOCKID (6) QUANTITY OF 3
所以更新数量后,衬衫的总库存为 3
股票 (3) 将变成 0 股票 (6) 将变成 3
我如何在 SQL 中查询。 谢谢你!
TOTAL STOCKS: (Base on the same itemName)
SHOES - 5
SHIRT - 10
BALL - 15
stockTable
stockId itemId stockQuantity stockOut
1 35 5
3 89 4
6 11 6
14 87 15
itemTable
itemId itemName itemSellPrice supplierName
35 shoes 50 Jason
89 shirt 40 Jacob
11 shirt 65 Max
87 ball 150 Sam
首先,您需要确定必须更新的 itemId(s),它们在结果中:
SELECT itemId FROM itemTable WHERE itemName = 'shirt'
话虽如此,更新查询将如下所示:
UPDATE stockTable SET ... WHERE itemId IN (SELECT itemId FROM itemTable WHERE itemName = 'shirt')
显然,现在我们需要更新数量,这必须逐步完成,直到从最低的 itemId 开始完成订单(例如):
SELECT IF(stockQuantity>7,@remaining_qty:=stockQuantity-7,@remaining_qty:=@remaining_qty-stockQuantity) AS `remaining_qty` FROM stockTable WHERE itemId IN (SELECT MIN(itemId) FROM itemTable WHERE itemName = 'shirt';
UPDATE stockTable SET stockQuantity=IF(stockQuantity>7,stockQuantity-7,0) WHERE itemId IN (SELECT MIN(itemId) FROM itemTable WHERE itemName = 'shirt');
之后,您可以检查变量@remaining_qty,并重复这些内容直到@remaining_qty>0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.