डीसीडब्ल्यू और डेम्स दोनों ने उपयुक्त वैकल्पिक प्रश्न उपलब्ध कराए हैं। मैं सिर्फ इस बात का स्पष्टीकरण देना चाहता था कि आपकी क्वेरी उस तरह से व्यवहार क्यों नहीं कर रही है जिसकी आपने अपेक्षा की थी।
यदि आपके पास एक क्वेरी है जिसमें एक ROWNUM और एक ORDER BY शामिल है, तो Oracle पहले ROWNUM और फिर ORDER BY लागू करता है। तो क्वेरी
SELECT *
FROM emp
WHERE rownum <= 5
ORDER BY empno
EMP
. से एक मनमाना 5 पंक्तियाँ प्राप्त करता है तालिका और उन्हें क्रमबद्ध करें-- लगभग निश्चित रूप से वह नहीं जो इरादा था। यदि आप ROWNUM का उपयोग करके "पहली N" पंक्तियाँ प्राप्त करना चाहते हैं, तो आपको क्वेरी को नेस्ट करना होगा। यह प्रश्न
SELECT *
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE rownum <= 5
EMP तालिका में पंक्तियों को सॉर्ट करता है और पहला 5 देता है।