PDA

View Full Version : دریافت شماره حساب آزاد از بین شماره حساب های موجود



M.T.P
پنج شنبه 26 اسفند 1389, 19:46 عصر
با سلام
دوستان ارجمند :
جدولی دارم که مشخصات افراد زیادی که هرکدوم یک شماره حساب اختصاصی دارند رو ذخیره میکنه.
فرض کنیم از 1 تا 1000 ما رکورد ثبت شده داریم در حالی که حساب شماره 200 رو به دلایلی حذف کردم ، برای معرفی یک حساب جدید میخوام قبل از اینکه 1001 باشه با یک دستور فیلد شماره حساب جستجو بشه و شماره حساب آزاد یعنی 200 رو پیشنهاد کنه ، البته با جستجوی رکورد به رکورد می تونم این کار رو انجام بدم اما آیا دستور sql به این منظور هست؟
با تشکر.

Reza_Yarahmadi
پنج شنبه 26 اسفند 1389, 21:48 عصر
چندین روش برای این کار وجود داره ، یکی از این روشها بصورت زیر میشه
Declare @MaxId int
Select @MaxId = Max(id) From TableName

;With res(id) as(
Select 1 as id
Union All
Select id+1 as id
From res
Where id < @MaxId
)
Select Id
From res
Where Id NOT IN (Select Id From TableName)

محمد سلیم آبادی
پنج شنبه 11 فروردین 1390, 22:40 عصر
فرض کنید اعداد زیر را داریم:
1و2و3و4و6
همانطور که مشاهده میشه عدد 5 در لیست فوق وجود ندارد و به اصطلاح miss شده و یک فضای هرز (gap) را تولید کرده.
کوئری زیر این عدد را پیدا میکنه:


SELECT MIN(id)
FROM Table AS T
WHERE NOT EXISTS
(SELECT *
FROM Table
WHERE id = T.id + 1);