Я написал быстрый способ сделать это. Не уверен, что это наиболее эффективно, но выполняет свою работу. Обратите внимание, что это не говорит вам разрыв, но говорит вам идентификатор до и после разрыва (имейте в виду, что разрыв может быть несколько значений, например 1,2,4,7,11 и т. Д.)
Я использую sqlite в качестве примера
Если это ваша структура таблицы
create table sequential(id int not null, name varchar(10) null);
а это твои ряды
id|name
1|one
2|two
4|four
5|five
9|nine
Запрос
select a.* from sequential a left join sequential b on a.id = b.id + 1 where b.id is null and a.id <> (select min(id) from sequential)
union
select a.* from sequential a left join sequential b on a.id = b.id - 1 where b.id is null and a.id <> (select max(id) from sequential);
https://gist.github.com/wkimeria/7787ffe84d1c54216f1b320996b17b7e