我有一张这样的表:
Id, TimeStart, TimeFinished
我需要找到TimeStart
之前开始的TimeFinished
,但Id
更高,这意味着重叠时间。
Id TimeStart TimeFinished
1 2014-01-01 2014-01-02
2 2014-01-02 2014-01-03
3 2014-01-02 2014-01-04
这可以在第3行找到。第2行是TimeStart < TimeFinished
。
(或者找到第3行中TimeFinished > TimeStart
的第2行)
答案 0 :(得分:1)
尝试左外连接:
SELECT t1.*
FROM table t1
LEFT JOIN table t2
ON t1.Id > t2.Id
AND t1.TimeStart < t2.TimeFinished
WHERE t2.Id IS NOT NULL
答案 1 :(得分:1)
如果您只想要第一条记录中的信息,请使用exists
:
select t.*
from table t
where exists (select 1
from table t2
where t.id > t2.id and t.TimeStart > t2.TimeFinish
);