如何在两个没有连续ID的连续行之间的MySQL中的DATEDIFF?

时间:2018-05-14 16:51:13

标签: mysql datediff

目前我有一个查询给我这个结果来自表" Logs":

S.ID    S.INDEX   E.ID  TIME                      Secs
1       1         1     2018-05-14 16:07:48.527   
2       2         1     2018-05-14 16:08:02.967   14
3       3         1     2018-05-14 16:08:21.750   19
10      1         2     2018-05-14 16:07:46.983
11      2         2     2018-05-14 16:08:00.883   14
12      3         2     2018-05-14 16:09:19.830   79
13      4         2     2018-05-14 16:09:49.907   30
29      1         3     2018-05-14 16:08:02.490
30      2         3     2018-05-14 16:08:06.717   04

专栏" Secs"这是手写的,这些是我需要的价值观。已经尝试使用DATEDIFF,但由于S.ID不连续(取决于E.ID),我没有得到正确的结果。

如何进行查询以返回正确的值?我想我应该考虑使用E.ID,因为它是唯一在同一时间内保持不变的东西。增量,如果我在S.INDEX中看到1,我应该重置计数。

1 个答案:

答案 0 :(得分:1)

这应该有效,只要我原始评论中描述的模式得到保证:

SELECT a.*, TO_SECONDS(a.TIME) - TO_SECONDS(b.TIME) AS `Secs`
FROM theTable AS s
LEFT JOIN theTable AS b ON a.`e.id` = b.`e.id` AND a.`s.id` = b.`s.id` + 1
;

此外,如果不同的e.id值的s.id值之间总是存在差距,则实际上并不需要e.id比较,但仍会使查询的意图更清晰。