怎样从一组不连续的数字中选出跳过了那些数字?

时间:2021-03-25 19:58:13
假如Student表中StuNumber列的数据为1101、1102、1103、1104、1107。
对于StuNumber列进行怎样的select操作才能显示1105?
就是判断中间有没有跳过某个数,如果跳过了几个数,选择跳过的数字中最小的一个(本例为1105),如果中间没有跳过数字(假如StuNumber列中的数据为1101、1102、1103、1104、1105、1106、1107)时,显示最大的数字+1,即为1108。

4 个解决方案

#1


这么复杂,有什么目的? 为什么不用程序来实现。

#2


select min(StuNumber+1)
from Student s
where StuNumber+1 not in (select StuNumber from Student)

#3


好复杂的逻辑  需要建个连续数字的表  然后left join你这个表

#4


引用 2 楼  的回复:
SQL code
select min(StuNumber+1)
from Student s
where StuNumber+1 not in (select StuNumber from Student)


牛人就是牛人!!!非常感谢!!!

#1


这么复杂,有什么目的? 为什么不用程序来实现。

#2


select min(StuNumber+1)
from Student s
where StuNumber+1 not in (select StuNumber from Student)

#3


好复杂的逻辑  需要建个连续数字的表  然后left join你这个表

#4


引用 2 楼  的回复:
SQL code
select min(StuNumber+1)
from Student s
where StuNumber+1 not in (select StuNumber from Student)


牛人就是牛人!!!非常感谢!!!