इस व्यवहार की व्याख्या करने के लिए, हमें यह समझने की आवश्यकता है कि Oracle ROWNUM को कैसे संसाधित करता है। एक पंक्ति में ROWNUM निर्दिष्ट करते समय, Oracle 1 से शुरू होता है और जब एक पंक्ति का चयन किया जाता है तो केवल मान में वृद्धि होती है; यानी, जब WHERE क्लॉज की सभी शर्तें पूरी होती हैं। चूँकि हमारी शर्त के लिए आवश्यक है कि ROWNUM 2 से बड़ा हो, कोई पंक्तियाँ नहीं चुनी जाती हैं और ROWNUM कभी भी 1 से आगे नहीं बढ़ता है।
लब्बोलुआब यह है कि निम्नलिखित जैसी स्थितियां अपेक्षित रूप से काम करेंगी।
.. जहां रौनम =1;
.. जहां राउनम <=10;
जबकि इन शर्तों वाली क्वेरीज़ हमेशा शून्य पंक्तियाँ लौटाएँगी।
.. जहां रौनम =2;
.. जहां राउनम> 10;
Oracle Rownum को समझने से उद्धरित
काम करने के लिए आपको अपनी क्वेरी को इस तरह से संशोधित करना चाहिए:
select empno
from
(
select empno, rownum as rn
from (
select empno
from emp
order by sal desc
)
)
where rn=2;
संपादित करें :मैंने पंक्ति को बाद प्राप्त करने के लिए क्वेरी को सही किया है सैल विवरण द्वारा आदेश