我有一个包含三列(id
,date_start
和date_end
)的表格,而id
并不是唯一的。我想检查一下,对于所有id
,只要有新的start_date
,之前的start_date
end_date
始终会出现在新的start_date
之前。我正在考虑加入表格本身尝试添加start_date
的列(如果有的话),以便我可以对end_date
进行检查,但我不确定最好的方法是什么这样做是。我正在运行SQLite。
答案 0 :(得分:1)
您可以将此表达为自我加入。我认为更明确的表达是使用相关子查询。以下查询根据您的规则返回所有异常:
select t.*
from (select t.*,
(select t2.end_date
from table t2
where t2.start_date < t.start_date
order by t2.start_date desc
limit 1
) as prev_end_date
from table t
) t
where prev_end_date >= start_date;