我想要做的是从表格中选择在同一日期,时间和地点发生的所有事件,并输出如下:
Event ID Event ID in conflict
1 2
1 3
1 4
5 6
因此,如果事件2 startTime在事件1 startTime和endTime之间,它应该出现在列表中。
我在表格中有这些信息:
有关如何在一个SELECT中执行此操作的任何建议吗?提前谢谢。
答案 0 :(得分:3)
您可以使用联接获取事件对。要获得任何重叠:
select e.eventid, e2.eventid
from events e join
events e2
on e.starttime < e2.endtime and
e.endtime > e2.starttime and
e.eventid < e2.eventid;
实际上,您的具体问题不是重叠。所以,针对您的具体问题:
select e.eventid, e2.eventid
from events e join
events e2
on e2.starttime between e.starttime and e.endtimee;
但是,我怀疑更一般的重叠逻辑可能适合您的需要。