我的桌子上有很多电话号码。其中很多都是顺序的。我想要的是能够要求一个'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
我的表基本上是一个池,只有一列。我尝试了各种各样的连接但没有太多运气。
答案 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 强>