如何查询一段序列数字中缺少的数字的语句

urtb124 2013-04-18 12:20:55
每张单子都有个编号,这个编号会随着新增单子而越来越大(MAX + 1)。
但如果从中间删除了某个单子,中间就断了,
现在客户要求在新增时需要补充被删除的编号。

现在有这样一段记录
编号
00009
00005
00004
00003
00001
这里要如何查询出当前应补充的编号为00002呢?如果补充了2之后。
00009
00005
00004
00003
00002
00001
下一次查询就是应该是00006了。
这里因为是新增时的触发器,所以需要效率,不能用遍历的方式。最好是一条语句搞定。求教,谢谢!
...全文
312 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
urtb124 2013-04-19
  • 打赏
  • 举报
回复
考虑了一下,还是按照SQL_Beginner 的思路去实现了,谢谢各位的指点。结贴了。
  • 打赏
  • 举报
回复
给你提供一个思路,具体的自己现实。 1,建一个用聚集索引字段ID的表TB1, 专门用来存放被删除的编号,每次删除的时候把删除的编号放入此表。 2,每次新增的时候去TB1提取一条记录,Select top 1 Id From TB1 order By Id, 由于是聚集索引,所以速度很快,插入之后再删除TB1中提取的那条记录。 整个过程注意并发的控制。
chuifengde 2013-04-18
  • 打赏
  • 举报
回复
想最快,那就在删的时候,把号存起来
哥眼神纯洁不 2013-04-18
  • 打赏
  • 举报
回复
用row_number函数排序,然后提取最小的对不上的编号就行。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧