查询之间的mysql时间戳

时间:2012-10-31 14:13:21

标签: mysql

在下面我有一个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的时间戳

1 个答案:

答案 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上查看。