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

WADA Hiroyuki wada @ komine-ag.co.jp
2002年 6月 27日 (木) 15:47:04 JST


和田です。

"K.Nakamura" wrote:

> データが
>  id         nm
> -----------------
>   1         aaa
>   4         bbb
>   5         ccc
>   8         ddd
>  10         eee
> と、あったときに、1〜10のID中から空いている5個のID(2,3,6,7,9)を
> 一度に取得できるSQLを書きたいのです

5個だとできそうに思えるかもしれませんが、50億個になったりもする
わけで、SQLで一度には無理な気がします。
このくらいで妥協しては?

select a.id+1 as low, min(b.id)-1 as high
 from abc as a,abc as b
 where a.id < b.id
 group by a.id
 having a.id+1 < min(b.id)

 low | high
-----+------
   2 |    3
   6 |    7
   9 |    9
(3 rows)



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