Получить пропущенные числа из базы данных mysql между двумя числами - PullRequest
0 голосов
/ 17 февраля 2020

Я хотел бы получить пропущенные числа из базы данных mysql между двумя числами. Диапазон от 0000000001 до 9999999999. В моей таблице есть два столбца serial_start и serial_end. В первом ряду значения 100 и 500, а во втором ряду 501 и 9999999999. Я хочу получить пропущенные значения от 1 до 99.

! [Введите описание изображения здесь] [1]

1 Ответ

0 голосов
/ 17 февраля 2020

Вы можете использовать lead(), чтобы получить пропущенные значения между строками, и union all, чтобы ввести первое:

select serial_start + 1, next_ss - 1
from (select t.*,
             lead(serial_start) over (partition by year order by serial_start) as next_ss
      from t
      where year = 2020
     ) t
where next_ss is not null or next_ss <> ss + 1
union all
select 1, min(serial_start) - 1
from t
where year = 2020
group by year
having min(serial_start) <> 1;
...