用sql語句獲取連續整數id中,缺失的最小id和最大id

例如數據庫表 table 結構和數據以下,要求使用sql語句查詢出連續整數id中,缺失的最小和最大id。sql

從數據來看,最終結果應該爲:最小 4,最大 14。數據庫

id
1
2
3
5
7
8
10
15
16

1、獲取缺失的最小idspa

能夠在現有的全部id加1,select id+1 from table; 獲得ci

2
3
4
6
8
9
11
16
17

因爲id序列是以整數+1的形式遞增,那麼這個序列中必然存在最小的缺失id,table

去掉表中存在的id,並獲得最小值就是咱們須要的結果。select

select MIN(id+1) from table t1
where not exists(select * from table t2 where t2.id = t1.id + 1);sql語句

2、獲取缺失的最大id數據

與上面的操做相反,查詢id減1的數字序列 select id+1 from table;查詢

0
1
2
4
6
7
9
14
15

去掉表中已有id,注意範圍不能超過表中最大idtab

select MAX(id-1) from table t1
where not exists(select * from table t2 where t2.id = t1.id - 1)
and id < (select MAX(id) from table) 

獲得14

相關文章
相關標籤/搜索