[pgsql-jp: 26513] Re: 空きID の複数検索

Miyata Tomoki miyata @ wave.plala.or.jp
2002年 6月 27日 (木) 22:11:37 JST


宮田と申します。

K.Nakamura wrote:
> 以下のようなテーブル構造で
> create table abc(
>     id integer,
>     nm text
> );
>
> データが
>  id         nm
> -----------------
>   1         aaa
>   4         bbb
>   5         ccc
>   8         ddd
>  10         eee
> と、あったときに、1〜10のID中から空いている5個のID(2,3,6,7,9)を
> 一度に取得できるSQLを書きたいのですが、I-Netや書籍をあさっても
> 書けません。
> どなたかよろしくご教授お願いいたします。

別のテーブルを用意する方法はどうでしょう?
一手間増えますが、難しいことをしなくてすみます。

SELECT * FROM abc;
 id | nm
----+-----
  1 | aaa
  4 | bbb
  5 | ccc
  8 | ddd
 10 | eee
(5 rows)

CREATE TABLE num(id integer);

INSERT INTO num VALUES (1);
INSERT INTO num VALUES (2);
INSERT INTO num VALUES (3);
INSERT INTO num VALUES (4);
(10まで入れる)

SELECT * from num;
 id
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 rows)

SELECT * FROM num t1 WHERE NOT EXISTS ( SELECT * FROM abc t2 WHERE t1.id = t2.id);
 id
----
  2
  3
  6
  7
  9
(5 rows)


----
Miyata Tomoki
miyata @ wave.plala.or.jp




pgsql-jp メーリングリストの案内