簡體   English   中英

SQL查詢從整數表中提取范圍

[英]SQL query to extract ranges from table of integers

以前可能已經在這里回答了這個問題,但是我不知道如何搜索它,因此我很抱歉如果重復的話。 我有一個帶有整數列的表,該表按順序保存數字。

由於刪除了行,一些數字丟失了:

+-------+
| _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)結合這兩個選擇。

但是我不知道如何編寫前兩個選擇。

數字序列具有一個屬性:如果從數字序列中減去一個序列,則結果是常數。 以下查詢使用此觀察結果:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM