首页 > 解决方案 > MySQL用之前的字段减去字段

问题描述

我想在每个值处从当前值之前的行中减去两个值,即当前值和值,基本上创建一个只有这些新值的新表,以便我可以后期平均它们。

表结构如下所示:

-----------------------
id | keyTime   | millis| 
------------------------
1  | 22:00:00  | 10  | 
2  | 22:05:00  | 20  |
3  | 22:10:00  | 30  | 
4  | 22:15:00  | 40  |

我想像这样减去:


id | dif    |
-------------
1  | 10-0   | 
2  | 20-10  |
3  | 30-20  | 
4  | 40-30  |

标签: sqlmariadbsubtraction

解决方案


您可以使用相关子查询:

select t.*, (millis - coalesce(prev_millis, 0)) as diff
from (select t.*,
             (select t2.millis
              from t t2
              where t2.keyTime < t.keyTime
              order by t2.keyTime desc
              limit 1
             ) as prev_millis
      from t
     ) t;

这假设id是不可靠的。使用id您显示的值,您可以简单地使用left join.


推荐阅读