PDA

View Full Version : استخراج مقادیر عددی یک ستون که حذف شده اند؟



mohammad diba
جمعه 29 بهمن 1389, 11:07 صبح
سلام بر بزرگوارن
فرض کنید یک ستون ID داریم که اعداد صحیح بین 1 تا 1000000 را قبول می کند حال می خواهیم مقادیری را در این ستون که در این بازه وجود ندارد را select کنیم یعنی فرض کنید Id مقادیر1و2و3و4و6و... رادارد و مقدار 5 حذف شده این دستور select باید این عدد 5 رو بده

Reza_Yarahmadi
جمعه 29 بهمن 1389, 17:01 عصر
این موضوع چندین بار مطرح شده و چند راه حل برای اون ارائه شده ، با یک جستجو خیلی سریعتر به جواب می رسیدید.
یک راه حل که از SQL Server 2005 جواب میده:

Declare @Max bigint
Select @Max = MAX(ID) From TableName
;With res(ID) as(
Select 1 as ID
UNION ALL
Select ID + 1 as ID
From res
Where ID < @Max
)
Select ID
From res
Where ID NOT IN (
Select ID
From TableName)

mohammad diba
جمعه 29 بهمن 1389, 17:49 عصر
خیلی ممنون از کمکتون این کد بالا زمانی جواب می ده که تعداد تکرار کوچکتر از 100 باشد ولی ID من تا 100000000 هم وجوداره که این پیغام رو میده:
Msg 530, Level 16, State 1, Line 3
The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
البته از option (maxrecursion 99999999); استفاده کردم ولی میگه حداکثر 32767 می تواند باشد! با تشکر

mohammad diba
جمعه 29 بهمن 1389, 18:11 عصر
سلام البته حل شد چون ممکنه بقیه هم استفاده کنند لازمه اینو بنویسیم


option (maxrecursion 0);