mysql - 减去两个表的 Select(Sum) Group By
问题描述
我有 2 张桌子,stock_in 和 stock_out。要找出库存水平,我需要从 stock_in 中减去 stock_out。我不知道从哪里开始,我尝试了下面的查询,但它不起作用。我在下面创建了表格来展示我想要实现的目标。
SELECT (SELECT item, size, SUM(qty) AS qty FROM stock_in GROUP BY item, size) - (SELECT item, size, SUM(qty) AS qty FROM stock_out GROUP BY item, size)
stock_in table
|item | size | qty |
|:------|:----:|----:|
|PhoneX | XL | 2 |
|PhoneY | L | 3 |
|PhoneZ | XL | 2 |
|PhoneX | XL | 2 |
stock_out table
|item | size | qty |
|:------|:----:|----:|
|PhoneX | XL | 1 |
|PhoneY | L | 2 |
|PhoneZ | XL | 1 |
|PhoneX | XL | 2 |
result (avaliable stock)
|item | size | qty |
|:------|:----:|----:|
|PhoneX | XL | 1 |
|PhoneY | L | 1 |
|PhoneZ | XL | 1 |
解决方案
您的代码将无法正常工作,因为子查询可以返回多行——而这对于标量子查询是不允许的。
我会建议union all
和聚合:
select item, size, sum(qty)
from ((select item, size, qty
from stock_in
) union all
(select item, size, - qty
from stock_out
)
) sio
group by item, size;
推荐阅读
- twitter-bootstrap - 在 vue.js 中改变颜色
- android - 共享图像意图在三星 S8 中不起作用
- node.js - npm 请求或 https 模块哪个更好
- grand-central-dispatch - 在 NSDocumentSubclass 初始化期间显示一个窗口
- css - css倾斜元素并获得内部圆角边框顶部
- javascript - 使用 Openseadragon 在大图像上使用 IE 11/Edge 得到“IndexSizeError”
- python-2.7 - 在 Python 中结束循环时停止 While 循环
- ubuntu - 粉碎(破折号)不在ubuntu上发送事件
- css - Jekyll - 推荐的文件导入方式
- javascript - React Native,Flex Box 有问题