دریافت شماره حساب آزاد از بین شماره حساب های موجود
با سلام
دوستان ارجمند :
جدولی دارم که مشخصات افراد زیادی که هرکدوم یک شماره حساب اختصاصی دارند رو ذخیره میکنه.
فرض کنیم از 1 تا 1000 ما رکورد ثبت شده داریم در حالی که حساب شماره 200 رو به دلایلی حذف کردم ، برای معرفی یک حساب جدید میخوام قبل از اینکه 1001 باشه با یک دستور فیلد شماره حساب جستجو بشه و شماره حساب آزاد یعنی 200 رو پیشنهاد کنه ، البته با جستجوی رکورد به رکورد می تونم این کار رو انجام بدم اما آیا دستور sql به این منظور هست؟
با تشکر.
نقل قول: دریافت شماره حساب آزاد از بین شماره حساب های موجود
چندین روش برای این کار وجود داره ، یکی از این روشها بصورت زیر میشه
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)
نقل قول: دریافت شماره حساب آزاد از بین شماره حساب های موجود
فرض کنید اعداد زیر را داریم:
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);