Sql 重叠时间
我有一张这样的桌子:Sql 重叠时间,sql,sql-server,datetime,overlap,Sql,Sql Server,Datetime,Overlap,我有一张这样的桌子: Id, TimeStart, TimeFinished 我需要找到任何在TimeFinished之前开始的TimeStart,但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行显示TimeStartTimeStart尝试左外部联接: SELE
Id, TimeStart, TimeFinished
我需要找到任何在TimeFinished之前开始的TimeStart,但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行显示TimeStartSELECT t1.*
FROM table t1
LEFT JOIN table t2
ON t1.Id > t2.Id
AND t1.TimeStart < t2.TimeFinished
WHERE t2.Id IS NOT NULL
如果您只需要第一条记录中的信息,则可以使用:
到目前为止你尝试了什么?您尝试的查询的具体问题是什么?请阅读《Pred的权利》,如果您能先尝试自己解决问题,然后在失败时来找我们,您会发现您在StackOverflow的住宿会更加舒适。
select t.*
from table t
where exists (select 1
from table t2
where t.id > t2.id and t.TimeStart > t2.TimeFinish
);