日期:2014-05-16  浏览次数:20614 次

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

------解决方案--------------------
SQL code
select min(StuNumber+1)
from Student s
where StuNumber+1 not in (select StuNumber from Student)

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