2012-10-31 180 views
0

在下面我有一个table1,table2,我被困在一个查询中。我想查找table2中两个连续时间戳table1之间的时间戳。如何形成这个查询。查询之间的mysql时间戳

表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 

希望的输出:Get它们是在表1中的时间戳之间,如果表1的可能的输出时间戳也

+0

您发布的样本数据的期望输出是什么? –

+0

你被困在哪里? – Kermit

+0

我被卡住的查询是得到比较table1的两行的逻辑 – Rajeev

回答

3
表2中的所有行

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

+0

这是一个非常聪明的解决方案。 – Sammitch

+0

@eggyal:你好,我需要在查询中的一个小的变化。时间戳与相同的ID比较(例如:所有时间戳有关ID 1,然后ID2 .....)。如何得到它 – Rajeev