"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > विश्लेषणात्मक कार्यों के बिना MySQL में प्रति श्रेणी शीर्ष पंक्तियों का कुशलतापूर्वक चयन कैसे करें?

विश्लेषणात्मक कार्यों के बिना MySQL में प्रति श्रेणी शीर्ष पंक्तियों का कुशलतापूर्वक चयन कैसे करें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:384

How to Efficiently Select Top Rows per Category in MySQL Without Analytic Functions?

MySQL में प्रति श्रेणी शीर्ष पंक्तियों का चयन करना

किसी तालिका में प्रत्येक श्रेणी से सीमित संख्या में पंक्तियों को पुनः प्राप्त करने के लिए, आप विश्लेषणात्मक कार्यों का उपयोग कर सकते हैं . हालाँकि, MySQL इन कार्यों को सीधे पेश नहीं करता है। फिर भी, वेरिएबल्स का उपयोग करके उनका अनुकरण करना संभव है। :

x चुनें।* से ( टी चुनें*, मामला जब @श्रेणी != t.श्रेणी तब @rownum := 1 अन्य @rownum := @rownum 1 अंत AS रैंक, @श्रेणी := t.श्रेणी AS var_category TBL_ARTIKUJT से टी शामिल हों (सेलेक्ट @rownum := NULL, @category := '') r टी.श्रेणी के अनुसार ऑर्डर करें ) एक्स जहां x.रैंक

स्पष्टीकरण

SELECT x.*
FROM (
    SELECT t.*,
    CASE 
        WHEN @category != t.category THEN @rownum := 1 
        ELSE @rownum := @rownum   1 
    END AS rank,
    @category := t.category AS var_category
    FROM TBL_ARTIKUJT t
    JOIN (SELECT @rownum := NULL, @category := '') r
    ORDER BY t.category
) x
WHERE x.rank सबक्वेरी TBL_ARTIKUJT तालिका से सभी पंक्तियों का चयन करती है और दो सत्र चर, @rownum और @category प्रारंभ करती है, वर्तमान रैंकिंग और श्रेणी को ट्रैक करने के लिए।

प्रत्येक पंक्ति को सौंपी गई रैंक उसकी श्रेणी के भीतर उसकी स्थिति को इंगित करती है। जब एक नई श्रेणी सामने आती है, तो रैंक 1 पर रीसेट हो जाती है। 3 से कम या उसके बराबर।

    यह विधि आपको विश्लेषणात्मक कार्यों पर भरोसा किए बिना वांछित कार्यक्षमता लागू करने की अनुमति देती है, जो समर्थित नहीं हैं MySQL.
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3