आप नीचे दिए गए उपयोगकर्ता परिभाषित चर का उपयोग कर सकते हैं, क्वेरी आपको प्रत्येक अलग-अलग उम्र के लिए एक रिकॉर्ड देगी, आंतरिक क्वेरी सिर्फ उसी उम्र के लिए जाँच कर रही है और उन्हें रैंक दे रही है जैसे 4 समान उम्र (आयु =1) रैंक 1,2,3 होगी ,4 और जब उम्र =2 तब रैंक संख्या फिर से 1 से शुरू होगी और जहां बाहरी क्वेरी का फ़िल्टर पंक्तियों को फ़िल्टर कर रहा है, जहां रैंक 1 है, इसलिए प्रत्येक अलग-अलग उम्र के लिए आपको एक पंक्ति मिलेगी और उन्हें बेतरतीब ढंग से ऑर्डर किया जाता है
SELECT c.name, c.Gender, c.Age, c.MP, c.score
FROM (
SELECT i.name, i.Gender, i.Age, i.MP, b.score,
@r:= CASE WHEN @g = i.Age THEN @r + 1 ELSE 1 END rownum,
@g:=i.Age
FROM i
INNER JOIN b ON b.name=i.name
CROSS JOIN(SELECT @g:=NULL ,@r:=0) a
WHERE i.MP='F' AND i.gender='F' AND b.score<=-1
ORDER BY i.Age, RAND()
) c
WHERE c.rownum = 1
ORDER BY c.Age
LIMIT 100
मान लीजिए कि आपकी सम्मिलित क्वेरी आपको परिणाम देती है
नमूना डेटा सेट
name gender Age Mp score
============================
test1 male 1 1 10
test2 male 1 1 10
test3 male 1 1 10
test4 male 2 1 10
test5 male 2 1 10
test6 male 3 1 10
test7 male 4 1 10
test8 male 4 1 10
.....
अब मेरे उत्तर में आंतरिक क्वेरी का उपयोग करने से आपको नीचे दिए गए रैंक कॉलम के साथ परिणाम सेट मिलेंगे
आंतरिक क्वेरी परिणाम सेट
name gender Age Mp score rank
==================================
test2 male 1 1 10 1
test1 male 1 1 10 2
test3 male 1 1 10 3
test4 male 2 1 10 1
test5 male 2 1 10 2
test6 male 3 1 10 1
test7 male 4 1 10 1
test8 male 4 1 10 2
जैसा कि उपरोक्त परिणाम सेट में आप देख सकते हैं कि उम्र =1 में 3 पंक्तियाँ हैं और उनकी रैंक अलग-अलग हैं 1,2,3 उम्र के लिए एक ही उदाहरण =2 रैंक उम्र के लिए 1,2 समान हैं =4, अब मेरे उत्तर में बाहरी क्वेरी होगी परिणाम को फ़िल्टर करें जहां रैंक =1 है, इसलिए अंतिम परिणाम सेट में प्रत्येक विशिष्ट के लिए एक पंक्ति होगी जैसा कि नीचे परिणाम सेट देखें
अंतिम आउटपुट
name gender Age Mp score rank
==================================
test2 male 1 1 10 1
test4 male 2 1 10 1
test6 male 3 1 10 1
test7 male 4 1 10 1
रैंडम ऑर्डरिंग भाग आंतरिक क्वेरी पर किया जाता है क्योंकि आप ऑर्डर को ORDER BY i.Age, RAND()
द्वारा देख सकते हैं। यह पहले आयु को आरोही क्रम में क्रमित करेगा और फिर समान आयु मानों के लिए यह परिणामों को बेतरतीब ढंग से क्रमित करेगा। आशा है कि यह समझ में आता है