首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从整数表中提取范围的SQL查询

从整数表中提取范围的SQL查询
EN

Stack Overflow用户
提问于 2014-12-03 15:16:43
回答 1查看 150关注 0票数 1

这可能已经在这里回答过,但我不知道如何寻找,所以我很抱歉,如果这是一个复制。我有一个带有整数列的表,它按顺序保存数字。

由于删除行,缺少了一些数字:

代码语言:javascript
复制
+-------+
| _auto |
+-------+
|   0   |
|   1   |
|   2   |
|  5    |
|  6    |
|  7    |
|   9   |
|  11   |
|  12   |
|  13   |
|  14   |
|   16  |
|   17  |
|  19   |
|  20   |
+-------+

我想要的是编写SQL查询,它为我提供了一个由此列上的范围组成的表。

代码语言:javascript
复制
+----+----+
|  F |  T |
+----+----+
|  0 |  2 |
|  5 |  7 |
|  9 |  9 |
| 11 | 14 |
| 16 | 17 |
| 19 | 20 |
+----+----+

我将在QT4::QSqlDatabase驱动程序中使用它,所以如果它能在任何兼容的数据库(ANSI )上工作,而不仅仅是PostgreSQL,那就太好了。

我相信这个算法:(1)选择行,这样就没有值为_auto+1的行;(2)相同,但auto-1;(3)合并这两个选择。

但是我不知道怎么写前两个选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 15:22:48

数字序列具有一个属性:如果从它们中减去一个序列,则结果是一个常数。以下查询使用此观察:

代码语言:javascript
复制
select min(_auto) as f, max(_auto) as t
from (select n._auto, row_number() over (order by n._auto) as seqnum
      from numbers n
     ) n
group by (_auto - seqnum);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27275253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档