在SQL中检查一行与下一行

时间:2014-05-26 15:24:15

标签: sql sqlite

我有一个包含三列(iddate_startdate_end)的表格,而id并不是唯一的。我想检查一下,对于所有id,只要有新的start_date,之前的start_date end_date始终会出现在新的start_date之前。我正在考虑加入表格本身尝试添加start_date的列(如果有的话),以便我可以对end_date进行检查,但我不确定最好的方法是什么这样做是。我正在运行SQLite。

1 个答案:

答案 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;