0

以下では、table1、table2 があり、クエリで立ち往生しています。table1 の 2 つの連続するタイムスタンプの間にある table2 のタイムスタンプを見つけたいです。このクエリの作成方法。

表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のタイムスタンプの間にあるtable2のすべての行を取得し、可能であれば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 に答える