Пример таблицы для обсуждения
#drop table if exists ids;
create table ids (id int primary key, in_use bool);
insert ids values
(1,0),
(2,0),
(3,0),
(4,0),
(5,0),
(6,0),
(7,0),
(8,0),
(9,1),
(10,1),
(11,0),
(12,0),
(13,0),
(14,0),
(15,0),
(16,0),
(17,0),
(18,0),
(19,0),
(20,0),
(21,0),
(22,0),
(23,0);
Следующий запрос даст вам все возможные начало и конец последовательности для удовлетворения требуемого размера диапазона (где предложение в конце);
select seq_start, id seq_end
from
(
select
id,
@start:=IF(in_use,null,IFNULL(@start,id)) seq_start,
@rownum:=IF(@start is null, 0, @rownum+1) rownum
from (select @start:=0, @rownum:=0) s
cross join ids
order by id
) numbered
where rownum = 11;