Postgres:在特定范围内的表中获取下一个空闲ID(不使用序列)

时间:2013-01-29 16:48:08

标签: postgresql

我有一张表t_user

CREATE TABLE t_user
(
  c_id bigint NOT NULL,
  c_lastname character varying(255)
)

该表使用任何序列来生成ID,而这些是在Postgres之外计算的(不要问,并且不关心这可能导致的问题)。 现在有一些“洞”,范围从0到1000,我需要知道并填写。

是否可以制定一个Postgres查询,该查询为该表中的所有未使用的ID提供0到1000的范围?

1 个答案:

答案 0 :(得分:5)

这是使用generate_series和外部联接的经典案例:

SELECT i FROM t_user RIGHT JOIN generate_series(0,1000) as i ON (c_id=i)
 WHERE c_id is null;