You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL双库存系统视图创建:求和计算困惑求助

解决MySQL双库存模式下的库存统计求和问题

嘿,我懂你现在的困扰!刚接触MySQL就搞双库存模式的改造,确实容易在聚合统计上踩坑。你原来用左连接子查询的写法,最大的问题是会产生笛卡尔积——当同一个SKU在不同门店有多条库存记录时,连接后会把这些行重复组合,导致SUM计算时把同一个库存数量加了好多次,结果自然就不对了。

正确的做法:用条件聚合替代子查询连接

不用搞复杂的左连接,直接在SUM里加条件判断,就能精准统计每个门店的库存,而且写法简洁高效:

CREATE VIEW stock_summary AS
SELECT 
    `sku`,
    SUM(CASE WHEN `idStock` = 1 THEN `stockQty` ELSE 0 END) AS `store1`,
    SUM(CASE WHEN `idStock` = 2 THEN `stockQty` ELSE 0 END) AS `store2`,
    SUM(`stockQty`) AS `total`
FROM `stockList`
GROUP BY `sku`;

为什么这个写法能解决问题?

  • GROUP BY sku会把同一个SKU的所有库存记录归为一组,避免重复行的干扰。
  • CASE WHEN会判断每条记录属于哪个门店:如果是门店1的库存,就把stockQty加入求和,否则加0;门店2同理。这样每个门店的库存只会被计算一次,不会因为连接导致重复累加。
  • 总库存total直接对所有stockQty求和,逻辑简单直接,和门店统计互不影响。

扩展性提示

如果以后要新增更多门店,只需要在SELECT里多加一行SUM(CASE WHEN idStock = N THEN stockQty ELSE 0 END) AS storeN就行,维护起来特别方便,比写一堆子查询连接省心多了!

内容的提问来源于stack exchange,提问作者Valladão

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:27:50