MYSQL:仅选择sum == 0的列

问题描述 投票:0回答:1

我有一张类似的表:

+----+--------+--------+------------+-----------+
| id | amount | rif_id |    date    | is_closed |
+----+--------+--------+------------+-----------+
|  1 | 20     | NULL   | 2017-11-12 | 1         |
|  2 | -5     | 1      | 2017-11-13 | NULL      |
|  3 | -10    | 1      | 2017-11-24 | NULL      |
|  4 | 7      | NULL   | 2017-11-25 | 0         |
|  5 | -5     | 1      | 2017-11-26 | NULL      |
|  6 | -5     | 4      | 2017-11-28 | NULL      |
|  7 | 11.20  | NULL   | 2017-11-30 | 0         |
+----+--------+--------+------------+-----------+

我需要得到一个更近期ID的列表,其中sum的数量等于零,参考rif_id。

在我的例子中,我需要得到这个结果:

+----+--------+--------+------------+-----------+
| id | amount | rif_id |    date    | is_closed |
+----+--------+--------+------------+-----------+
|  5 | -5     | 1      | 2017-11-26 | NULL      |
+----+--------+--------+------------+-----------+

我需要ID 5,因为这个-5的金额(ID为1,2和3)恰好为零。

仅供参考,当在表格中插入最后一笔交易时,“is_closed”列将更新为1。实际上,当插入ID 5时,我的脚本用“is_closed”计算并更新ID 1 1.不知道是否对SQL SELECT create很重要。

mysql
1个回答
0
投票

我想你可以这样做:

  1. 获取所有具有相同ref_id的记录,并使id <成为当前记录
  2. 仅过滤累计值等于0的记录.qazxsw poi
  3. 按id排序并获取第一个。 sum(t2.amount) = 0
Order by id desc Limit 1
© www.soinside.com 2019 - 2024. All rights reserved.