在下面我有一个table1,table2,我遇到了一个查询。我想在table2中找到table1中两个连续时间戳之间的时间戳。如何形成这个查询。
表1:
id timestamp
1 2012-08-15 01:11:11
1 2012-08-15 01:11:14
1 2012-08-15 01:11:16
2 2012-08-15 01:22:11
2 2012-08-15 01:32:11
2 2012-08-15 01:33:11
2 2012-08-15 01:36:11
表2:
id timestamp
1 2012-08-15 01:11:12
1 2012-08-15 01:11:15
1 2012-08-15 01:11:16
2 2012-08-15 01:23:55
2 2012-08-15 01:26:11
2 2012-08-15 01:34:11
2 2012-08-15 01:36:01
所需的输出:获取table1的所有行,这些行位于table1的时间戳之间,如果可能,还输出table1的时间戳
答案 0 :(得分:3)
将table1
加入自身,然后分组以查找连续的时间戳,然后根据需要将结果加入table2
:
SELECT *
FROM table2 JOIN (
SELECT a.timestamp start, MIN(b.timestamp) finish
FROM table1 a JOIN table1 b ON a.timestamp < b.timestamp
GROUP BY a.timestamp
) t ON table2.timestamp BETWEEN t.start AND t.finish
在sqlfiddle上查看。