在我的数据库中我有 10 个用户编号,其中一些已被删除,当我选择列时显示如下:
missing_user_number:
1,
2,
5,
8,
10,
而且我需要知道是否有一个脚本可以像这样获取缺失的数字,我不想恢复已删除的数据,我只想将缺失的数字作为一个整数数据:
missing_user_number:
3,
4,
6,
7,
9,
最佳答案
在大多数 SQL 版本中,获取缺失值的范围实际上比获取每个缺失值更容易:
select user_number + 1 as missing_range_start, next_user_number - 1 as missing_range_end
from (select t.*,
lead(user_number) over (order by user_number) as next_user_number
from t
) t
where user_number <> user_number + 1;
注意:这只会找到内部缺失的数字,如您问题中的示例所示。
关于sql - 使用sql获取数字列表之间的缺失数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249703/