目前我有一个查询给我这个结果来自表" 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,我应该重置计数。
答案 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比较,但仍会使查询的意图更清晰。