如何在 SQL Server 列中找到最小的未使用数字?
我即将从 Excel 中将大量手动记录的记录导入到 SQL Server 表中。它们都有一个数字 ID(称为文档编号),但由于不再适用的原因,它们没有按顺序分配,这意味着从现在开始,当我的网站记录新记录时,它需要为其分配尽可能小的文档编号(大于零)尚未采取。
有没有办法通过普通的 SQL 来做到这一点,或者这是 TSQL/代码的问题?
谢谢!
编辑
特别感谢WW提出并发问题。鉴于这是一个 Web 应用程序,它根据定义是多线程的,任何面临同样问题的人都应该考虑使用代码或数据库级别的锁来防止冲突。
LINQ
仅供参考 - 这可以通过 LINQ 使用以下代码完成:
var nums = new [] { 1,2,3,4,6,7,9,10};
int nextNewNum = (
from n in nums
where !nums.Select(nu => nu).Contains(n + 1)
orderby n
select n + 1
).First();
nextNewNum == 5