मेरे पास 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
संबंधित सवाल
नए सवाल
mysql
MySQL एक फ्री, ओपन सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है जो स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) का उपयोग करता है। इस टैग को अन्य DBs जैसे SQL Server, SQLite आदि के लिए उपयोग न करें। वे विभिन्न DB हैं जो सभी डेटा का प्रबंधन करने के लिए SQL की अपनी बोलियों का उपयोग करते हैं।