テーブル作って、
SQL> create table users (id number(4));
欠番になるよう insert して、
SQL> insert into users (id) values (1); SQL> insert into users (id) values (2); SQL> insert into users (id) values (4); SQL> insert into users (id) values (6); SQL> insert into users (id) values (10); SQL> insert into users (id) values (15); SQL> commit;
欠番になってることを確認して、
SQL> select * from users; ID ---------- 1 2 4 6 10 15 6 rows selected.
欠番を見つけてみる。
SQL> select id+1 id from users u1 where not exists ( select * from users u2 where u1.id+1 = u2.id); ID ---------- 3 5 7 11 16
できたけどこれじゃ連続する欠番が表示されないので、ちょっと工夫してうりゃっとやると、
SQL> select * from (select level id from dual connect by level <= 20) x where not exists (select * from users u where x.id = u.id); ID ---------- 3 5 7 8 9 11 12 13 14 16 17 18 19 20 14 rows selected.
でけた!