連番テーブルを使って欠番を求める

前回、連続した番号をもったビューの作り方をまとめた。
今回は、これを使って「特定の数列の中から欠番を求める」というのをまとめる。

以下のように、数列の中で一部歯抜けになっているmissing_numというテーブルがあるとする。

num
0
1
2
4
5
6
9

この中に含まれていない番号を抜き出してくる場合には、きちんと連番になっている数列と比較して含まれていないものを取り出せば良い。
これには、EXCEPTを使った方法とNOT INを使った方法があるが、どちらも結果はおなじになる。

select seq
from Sequence
where seq between 0 and 9
EXCEPT
select num from missing_num;

select seq
from Sequence
where seq between 0 and 9
and seq not in (select num from missing_num);
num
3
7
8

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
ミック
翔泳社
売り上げランキング: 10,012