1

重複の可能性:
SQLServerで未使用の最小数を見つけます

私はSQLサーバーにこのテーブルを持っています

ID |  LetterID | LetterName

ID=>intとidentity

LetterID=>intおよびuniqueおよびNotNull

LetterName=>文字列

LetterID私のC#アプリケーションとそのユーザーセット番号から入力します。たとえば、1,2,3,4,5、...、100、..(各行の単位を増やします)そして今は私のLetterIDです100が時々ユーザーが1つの行を削除しますたとえば、テーブルから行を削除します。ここLetterID50、(アプリケーションで)新しい行を挿入するために、私は彼にLetterID選択を提案しました50。テーブルから不足している番号を取得するにはどうすればよいですか?

4

4 に答える 4

1
var output =  Enumerable.Range(1, list.Max(item => item.LetterID))
          .Except(list.Select(item => item.LetterID))
于 2012-08-22T11:40:02.683 に答える
0
select t1.ID, t1.LetterID-1 
from yourtable t1
    left join yourtable t2 
on t1.LetterID = t2.LetterID+1
and t1.ID = t2.ID
where t2.ID is null
and t1.LetterID>(select MIN(LetterID) from yourtable where ID = t1.ID)
于 2012-08-22T11:38:16.803 に答える
0
;with cte as
(
  select max(LetterID) as id from your_table
  union all
  select id-1 from cte where id>1
)
select cte.id as LetterID
from cte
left join your_table yt on cte.id=yt.LetterID
where yt.id is null
order by cte.id
于 2012-08-22T12:05:33.827 に答える
0

空白/欠落している行を取得する

SELECT TOP 1 x.LetterID +1 
FROM tablename x
WHERE NOT EXISTS(SELECT * FROM tablename xx WHERE xx.LetterID  = x.LetterID  + 1)
ORDER BY x.LetterID
于 2012-08-22T13:27:52.053 に答える