SQL Server 列で使用されていない最小の数値を見つけるにはどうすればよいですか?
手動で記録された大量のレコードを Excel から SQL Server テーブルにインポートしようとしています。それらはすべて数値 ID (文書番号と呼ばれる) を持っていますが、もはや適用されない理由により、順番に割り当てられていませんでした。つまり、今後、私の Web サイトが新しいレコードを記録するとき、可能な限り小さい文書番号を割り当てる必要があります (ゼロより大きい) まだ取得されていません。
プレーン SQL でこれを行う方法はありますか、それとも TSQL/コードの問題ですか?
ありがとう!
編集
並行性の問題を提起してくれたWWに特に感謝します。これが Web アプリであることを考えると、定義上マルチスレッドであり、同じ問題に直面した場合は、競合を防ぐためにコードまたは DB レベルのロックを検討する必要があります。
リンク
参考までに-これは、次のコードを使用して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