मेरे पास spIndex नाम का एक SQL टेबल फ़ील्ड है, जिसमें 1 से n तक के मान हो सकते हैं।

कहो, अगर मेरे पास spIndex 1,3,4,5 वाले रिकॉर्ड हैं। तब न्यूनतम उपलब्ध सूचकांक है : 2

मैं SQL क्वेरी का उपयोग करके इस न्यूनतम उपलब्ध (mAI) अनुक्रमणिका का पता लगाना चाहता हूं।

say 
table name: account, 
field name: spIndex,

मैं एमएआई कैसे निकाल सकता हूं।

1
Keval Bhogayata 22 अक्टूबर 2020, 18:06

2 जवाब

सबसे बढ़िया उत्तर

स्वयं शामिल होने के साथ:

select a1.spIndex + 1 mAI
from (select spIndex from account union select 0) a1 
left join account a2
on a2.spIndex = a1.spIndex + 1
where a2.spIndex is null
order by a1.spIndex limit 1

डेमो देखें।

2
forpas 22 अक्टूबर 2020, 18:31

आप lead() का उपयोग कर सकते हैं:

select min(spindex + 1)
from (select t.*,
             lead(spindex) over (order by spindex) as next_spindex
      from t
     ) t
where next_spindex is null or next_spindex > spindex + 1;

नोट: यह उपलब्ध होने पर 1 वापस नहीं करता है। यदि आपको इसकी आवश्यकता है:

select coalesce( (case when min(spindex) <> 1 then 1 end),
                 min(spindex) + 1
               )
from (select t.*,
             lead(spindex) over (order by spindex) as next_spindex
      from t
     ) t
where next_spindex is null or next_spindex > spindex + 1;
1
Gordon Linoff 22 अक्टूबर 2020, 18:09