समस्या:
आप Oracle में किसी क्वेरी के परिणामस्वरूप पंक्तियों की संख्या को सीमित करना चाहते हैं।
उदाहरण:
exam
तालिका, परीक्षा के परिणामों के साथ छात्रों के नाम हैं।
नाम | परीक्षा_परिणाम |
---|---|
जेनेट मोर्गन | 9 |
ताया बैन | 11 |
ऐनी जॉनसन | 11 |
जोश कौर | 10 |
एलेन थॉर्नटन | 8 |
आप तीन पंक्तियों को सर्वोत्तम परीक्षा परिणामों के साथ प्राप्त करना चाहते हैं।
समाधान 1:
SELECT * FROM ( SELECT * FROM exam ORDER BY exam_result DESC ) WHERE ROWNUM <= 3;
क्वेरी का परिणाम इस तरह दिखता है:
नाम | परीक्षा_परिणाम |
---|---|
ताया बैन | 11 |
ऐनी जॉनसन | 11 |
जोश कौर | 10 |
चर्चा:
FROM
. में क्लॉज, एक सबक्वेरी का उपयोग करें जो पंक्तियों को exam_result
. द्वारा क्रमबद्ध करता है अवरोही क्रम में कॉलम।
SELECT * FROM exam ORDER BY exam_result DESC
मुख्य क्वेरी में, एक शर्त लिखें कि पंक्तियों की संख्या 3
. से कम या उसके बराबर होनी चाहिए . इसे करने के लिए ROWNUM (पंक्ति संख्या) का उपयोग करें। यह सुनिश्चित करने के लिए कि आपको केवल पहली तीन पंक्तियाँ दिखाई दें, आपको एक शर्त की आवश्यकता है कि पंक्ति संख्या 3
से कम या उसके बराबर होनी चाहिए ।
WHERE ROWNUM <= 3
पंक्तियों को क्रमबद्ध करने के लिए आपको एक सबक्वायरी की आवश्यकता है। यदि आप तीन पंक्तियों को सर्वश्रेष्ठ तीन के बजाय यादृच्छिक रूप से चाहते हैं, तो बस सबक्वेरी के बजाय तालिका का नाम लिखें।
SELECT * FROM exam WHERE ROWNUM <= 3;
ध्यान रहें! यह तब काम नहीं करेगा जब आप कुछ मान से बड़ी संख्या वाली पंक्तियों की तलाश कर रहे हों (उदाहरण के लिए, ROWNUM > 2
कोई पंक्ति नहीं लौटाएगा।)