我有一个id范围(它由startid和stopid定义)。我有一个有一些记录的表(每个记录都有一个id-primaty密钥)。现在,我需要从表中不存在的指定范围中选择所有ID。我正在使用postgres数据库。请建议我必须执行这种查询的选项。

最佳答案

你可以看看函数。
然后使用except子句来获得差异。

select s.a from generate_series(<start>, <stop>) as s(a)
except
select id from <myTable>
where <yourClause>
--order by a

generate_series

10-08 09:46