我有两列Page_fromPage_to。记录排序后,它们显示为...

Page_from   Page_to
1              4
5              7
9              11


这里缺少第8页。
我想找到缺少的页码,因此我必须能够将上一行中的Page_to值与当前行中的Page_from进行比较。

最佳答案

您可以通过找到先前的记录,并比较先前的page_to和当前的page_from来找到缺失序列的开始。如果存在间隙,则可以同时获得第一页和最后一页。

select tprev.page_to + 1 as missing_page_from, t.page_from - 1 as missing_page_to
from (select t.*,
             (select tprev.page_to
              from t tprev
              where tprev.page_from < t.page_from
              limit 1
             ) as prev_to
      from t
     ) t
where prev_to is not null and
      prev_to <> t.page_from - 1;

07-24 16:50