我有一个包含~3列的表,一列用于id,其余的包含时间戳值:
id | start_date | end_date
我想做一个查询,它将返回相邻两个事件之间的差异。到目前为止,我编写了sql查询:
SELECT start_date, end_date FROM table ORDER BY begin_date asc
现在我不知道如何才能得到不同行之间的差异,例如:
我有三排:
1 | 1428443952 | 1428444010
2 | 1428443952 | 1428443973
3 | 1428443952 | 1428443975
我想查询一下
(start_date of id2) - (end_date of id1)
(start_date of id3) - (end_date of id2)
etc.
有可能吗?
最佳答案
是,使用联接:
select t.start_date - tprev.end_date
from table t join
table tprev
on t.id = tprev.id + 1;
编辑:
上面的方法是最有效的方法,但是它假设id是有序的(正如问题所建议的那样)。另一种方法是:
select (t.start_date -
(select tprev.end_date
from table tprev
where tprev.end_date < t.start_date
order by tprev.end_date
limit 1
)
) as diff
from table t
having diff is not null;
关于php - 从mysql数据库的两个不同行中减去值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29526451/