2012-10-31 54 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