Postgresql7.4.11を使用してあるソフトを作っているのですが、SQL文で、あるカラムからまだ使用されていないUniqueな値を得る簡単な方法が知りたいです。


たとえば、idというint型もしくはvarchar型のカラムに、1, 2, 3, 4, 8,…と値が入っている時, 5, 6, 7, 9,…といった、まだ使用されていない値を取得したい、ということです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/07/14 22:47:44
  • 終了:2006/07/21 22:50:02

回答(2件)

id:icchan0000 No.1

icchan0000回答回数85ベストアンサー獲得回数52006/07/15 00:06:13

ポイント60pt

えっと、確認なのですが、「現在入っている最大の値より小さい値で、レコードに存在しないもの全て」を取得したいってことでしょうか?

そうだとしたら、最大値をmax(column)で取得して、後は1からmax値まで、ループを回すしかないんじゃないかなぁ。。。

URL必須とのことなので↓max関数。。。

http://www.postgresql.jp/document/pg746doc/html/functions-aggreg...


お役に立たなければポイントは不要です~

id:tecra

全てではなく、どれかひとつでもかまわないのですが・・・

2006/07/19 02:37:00
id:bonlife No.2

回答回数421ベストアンサー獲得回数752006/07/19 11:07:39

ポイント10pt

どれか1つということでしたら、以下のSQLで一番小さい使われていない値を求めることができます。

SELECT MIN(id + 1)
FROM   sample01
WHERE  id +1 NOT IN (SELECT id FROM sample01)
;

id列が主キー(Primary Key)でインデックスが張られていれば、パフォーマンス面でも問題なく動作すると思います。

参考になれば幸いです。

[参考URL]

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません