SQL Serverの列で使用されていない最小の番号はどうやって見つかりますか?SQL Serverで使用されていない最小の番号の検索
手動で記録された多数のレコードをExcelからSQL Serverテーブルにインポートしようとしています。彼らはすべて数字のID(文書番号と呼ばれます)を持っていますが、私のWebサイトが新しいレコードを記録した時点から、適用可能な最小の文書番号を割り当てる必要がありますゼロより大きい)である。
これをプレーンSQLで行う方法はありますか、これはTSQL /コードの問題ですか?
ありがとうございます!同時実行の問題を惹起するためのWWへ
EDIT
感謝します。これはウェブアプリケーションであることから、定義上マルチスレッドであり、この同じ問題に直面した人は、競合を防ぐためにコードレベルまたはDBレベルのロックを考慮する必要があります。 FYI
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
これは、範囲の先頭から始まるすべての連続したIDブロックを欠落します。たとえば、 'table'にids(5,6,8,9,10)がある場合、これは1から4のいずれかではなく7を返します。 – joshperry
@joshperryそうです。私は0より大きい全てのIDを満たすことを望んでいるというコメントを見逃しました。私は醜い修正を加えました。多分誰かが改善を提案するでしょう。 –
+1とても助かりました、ありがとう!他の答えのほとんどは、 "あなたはそれをする必要はありません、システムがキーをインクリメントさせる"ですが、私の場合はプライマリキーではなく、空のスロットが問題になる別のユニークな数値フィールドです削除の結果としてではなく、発生します。 –