在SQL中选择连续事件集

时间:2010-08-25 17:22:33

标签: sql mysql sqlite

好的,现在我正在开发一个包含大量事件对象的程序。每个事件对象都有一个开始时间和结束时间(两个完整的时间戳)。很多事件都是连续的(一个事件的endTime与下一个事件的startTime相同),表明这两个事件是连续发生的。 如果我要将所有事件存储在SQLite或MySQL表中,是否可以查询每组连续事件?

说我的桌子看起来像这样。

id   title          start_time           end_time
----------------------------------------------------------
1    Happy Time     4/3/2010 10:00:00    4/3/2010 13:00:00
2    Happier Time   4/3/2010 13:00:00    4/3/2010 18:00:00
3    Good Time      4/4/2010 18:00:00    4/4/2010 19:00:00
4    Gooder Time    4/4/2010 19:00:00    4/4/2010 22:00:00
5    Sad Time       4/6/2010 16:00:00    4/6/2010 20:00:00

我希望能够查询此表并查看id 1和2是连续的,id 3和4是连续的,id 5是......与自身连续。

我不知道从哪里开始的原因是因为每当我使用SQL查询时,结果都作为单独的行返回。结果中的一行永远不会成为子组的一部分。

如果您有任何问题,请随时发表评论。谢谢!

1 个答案:

答案 0 :(得分:2)

SELECT a.id, a.title, a.start_time, a.end_time, b.id, b.title, b.start_time, b.end_time
FROM TABLE1 a, TABLE1 b
WHERE a.start_time = b.end_time

编辑:根据附加信息进行修改:

SELECT a.id, a.title, a.start_time, a.end_time, b.id, b.title, b.start_time, b.end_time
FROM TABLE1 a left join TABLE1 b ON a.start_time = b.end_time