下一组序列号mysql

时间:2015-08-11 03:03:38

标签: mysql gaps-and-islands

我的桌子上有很多电话号码。其中很多都是顺序的。我想要的是能够要求一个'n'序列号块然后得到它们。

例如我的表是这样的:

'number'
'2220381'
'2220382'
'2220383'
'2220384'
'2220386'
'2220387'
'2220389'
'2220390'
'2220391'
'2220392'
'2220393'
'2220394'
'2220395'

我已经找到了很多关于如何使用oracle和MSSQL执行此操作的线程以及如何查找Gaps但是他们用于查找Islands的函数似乎在MySQL中不可用但我感兴趣的是块序列大小为n。

所以我想要做的就是向这个数据库询问5个连续数字(我不在乎它们是什么,但是想要下一个5)。并在这种情况下返回2220386,2220387,2220388,2220389,2220390

我的表基本上是一个池,只有一列。我尝试了各种各样的连接但没有太多运气。

1 个答案:

答案 0 :(得分:1)

create table nums
(
    num int not null
);

-- truncate table nums;
insert nums (num) values (1),(2),(14),(15),(16),(17),(20),(21),(22),(23),(24),(30),(81),(120),(121),(122),(123),(124);

select min(t2.num)
from
( 
select t1.num
from nums t1 
where 5 in (select count(*) from nums where num in (t1.num,t1.num+1,t1.num+2,t1.num+3,t1.num+4))
) t2;

<强>答案: 20