ИМХО, если такой вопрос возник, то ВОЗМОЖНО что -то делаете не так. Вещать бизнес-смысл на IDб основная цель которых обеспечить уникальность - это в общем случае не очень правильно.
Тем не менее...
Возможно есть более красивое решение, но сходу не приходит в голову (для каждой БД оно будет свое).
Общий подход:
1. Создаем таблицу t2 с большим количеством строк и с одним полем num. В цикле заполняем ее значениями от 1 до n.
2. В запросе минусуем исходную таблицу из t2
SELECT t.num FROM t2
EXCEPT
SELECT t.id FROM base_table t
все.
ЗЫ Если таблицу делать лень, а число записей небольшое, то можно воспользоваться
SELECT unnest(array[1, 2, 3, 4)