【发布时间】:2014-12-03 15:16:43
【问题描述】:
这可能以前已经在这里回答过,但我不知道如何搜索它,所以如果它是重复的,我很抱歉。我有一个带有整数列的表,它按顺序保存数字。
由于删除行而丢失了一些数字:
+-------+
| _auto |
+-------+
| 0 |
| 1 |
| 2 |
| 5 |
| 6 |
| 7 |
| 9 |
| 11 |
| 12 |
| 13 |
| 14 |
| 16 |
| 17 |
| 19 |
| 20 |
+-------+
我想要的是编写 SQL 查询,它给了我一个由该列上的范围组成的表。
+----+----+
| F | T |
+----+----+
| 0 | 2 |
| 5 | 7 |
| 9 | 9 |
| 11 | 14 |
| 16 | 17 |
| 19 | 20 |
+----+----+
我会将它与 QT4::QSqlDatabase 驱动程序一起使用,所以如果它可以在任何兼容的数据库 (ANSI SQL) 上工作,而不仅仅是 PostgreSQL,那就太好了。
我相信这个算法:(1)选择行,这样就没有值的行_auto+1; (2) 相同,但 _auto-1; (3) 联合这两个选择。
但我不明白如何写前两个选择。
【问题讨论】:
标签: sql select sequence gaps-and-islands ansi-sql