我有一张表,里面有一些输入和输出的数据。
+====+===========+==========+============+
| id | flow(int) | quantity | product_id |
+====+===========+==========+============+
| 1 | 0 | 100 | 1 |
+----+-----------+----------+------------+
| 2 | 1 | 20 | 1 |
+----+-----------+----------+------------+
| 3 | 1 | 30 | 1 |
+----+-----------+----------+------------+
| 4 | 0 | 10 | 1 |
+----+-----------+----------+------------+
| 5 | 1 | 30 | 2 |
+----+-----------+----------+------------+
| 6 | 2 | 10 | 2 |
+----+-----------+----------+------------+
| 7 | 0 | 10 | 2 |
+====+===========+==========+============+
列流是枚举、0-传入、1和2-传出操作的一种类型。
如何获得特定产品的当前“余额”?
产品1应具有“余额”60=输入(100)-输出(20)-输出(30)+输入(10)。
产品2应该有-30“余额”=输出(30)-输出(10)-输入(10)。
是否可以用任何有效的方式进行单次查询?
最佳答案
使用下列内容:
SELECT product_id,
SUM( IF(flow IN ('1','2'),
-1*quantity,
quantity) ) AS balance
FROM table_name
GROUP BY product_id;
关于mysql - 聚合并计算mysql中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52278661/