0

在下面我有一个 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

所需的输出:获取 table2 的所有行,这些行位于 table1 的时间戳之间,如果可能的话,还可以输出 table1 的时间戳

4

1 回答 1

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

于 2012-10-31T14:47:14.183 回答