我有一个书签表,其中包含一个名为 BookmarkNumber 的(smallint)列。 创建和删除书签。 当创建新书签时,例如对于 Id="oo",我想使用下一个可用的 BookmarkNumber 创建一条新记录。在下面的示例中,该值为 4。
这个查询是什么样的?
Id | BookmarkNumber
-----------------
dd | 1
aa | 2
dd | 3
tt | 5
ff | 27
uu | 28
generate_series()
创建所有数字并找到未使用的最小数字:
insert into Bookmarks (Id, BookmarkNumber)
select '<some-id>', min(value)
from generate_series(1, 99)
left join Bookmarks on BookmarkNumber = value
where BookmarkNumber is null
group by 1