从我的sql数据库中获取两个数字之间缺少的数字

问题描述 投票:0回答:1

从我的sql数据库中获取两个数字之间的缺少的数字,起始数字是0000000001和9999999999,在我的表中,我有两列serial_start和serial_end,并且如您在第一个rwo数据中看到的有100和500以及在第二行501和9999999999而我想得到的缺失值是1到99

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9hODZnNC5wbmcifQ==” alt =“在此处输入图像描述”>

mysql sql numbers
1个回答
0
投票

您可以使用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;
© www.soinside.com 2019 - 2024. All rights reserved.