获取下一个可用号码

问题描述 投票:0回答:1

我有一个书签表,其中包含一个名为 BookmarkNumber 的(smallint)列。 创建和删除书签。 当创建新书签时,例如对于 Id="oo",我想使用下一个可用的 BookmarkNumber 创建一条新记录。在下面的示例中,该值为 4。

这个查询是什么样的?

Id      | BookmarkNumber
-----------------
dd      | 1
aa      | 2
dd      | 3
tt      | 5
ff      | 27
uu      | 28
sql sql-server numbers common-table-expression
1个回答
0
投票

使用

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
© www.soinside.com 2019 - 2024. All rights reserved.