PDA

View Full Version : شماره های سریالی ناموجود



aryajonbesh
چهارشنبه 21 بهمن 1394, 20:17 عصر
با سلام خدمت تمامی دوستان گلم در سایت برنامه نویس.
دنبال یک کوئری بودم که با استفاده از اون بشه شماره هایی که مابین یک رنج عدد ناموجود هستند را پیدا کنم. و با کلی جستجو و این در و اون در زدن بالاخره تونستم برای این موضوع یک خط کوئری بنویسم و جواب هم گرفتم و خواستم این کوئری را اینجا با شما عزیزان به اشتراک بذارم.

مثال : [1,2,3,4,6,7,8,10,11,12]

در این مجموعه اعداد 5 و 9 موجود نیستند و ما باید بتوانیم بدون استفاده از حلقه و کدهای اضافی و فقط در یک خط کوئری اعداد ناموجود در این مجموعه را بدست بیاریم.

select start, stop from (select m.Code + 1 as start, (select min(Code) - 1 from tblA as x where x.Code > m.Code) as stop from tblA as m left outer join tblA as r on m.Code = r.Code - 1 Where r.Code Is Null) as x where stop is not null

در قطعه کوئری فوق Code نام فیلدی هست که اعداد مثال در اون قرار داره و tblA هم نا جدول هست و شما بجای Code و tblA باید از نام های خودتون استفاده کنید.

با آرزوی توفیق