我有一张表,里面有一些输入和输出的数据。

+====+===========+==========+============+
| 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/

10-16 15:23
查看更多