たとえば、idというint型もしくはvarchar型のカラムに、1, 2, 3, 4, 8,…と値が入っている時, 5, 6, 7, 9,…といった、まだ使用されていない値を取得したい、ということです。
えっと、確認なのですが、「現在入っている最大の値より小さい値で、レコードに存在しないもの全て」を取得したいってことでしょうか?
そうだとしたら、最大値をmax(column)で取得して、後は1からmax値まで、ループを回すしかないんじゃないかなぁ。。。
URL必須とのことなので↓max関数。。。
http://www.postgresql.jp/document/pg746doc/html/functions-aggreg...
お役に立たなければポイントは不要です~
どれか1つということでしたら、以下のSQLで一番小さい使われていない値を求めることができます。
SELECT MIN(id + 1) FROM sample01 WHERE id +1 NOT IN (SELECT id FROM sample01) ;
id列が主キー(Primary Key)でインデックスが張られていれば、パフォーマンス面でも問題なく動作すると思います。
参考になれば幸いです。
[参考URL]
全てではなく、どれかひとつでもかまわないのですが・・・