खोज…


पंक्ति को सीमित करने वाले खंड के साथ पहले एन पंक्तियां प्राप्त करें

FETCH क्लॉज Oracle 12c R1 में पेश किया गया था:

SELECT   val
FROM     mytable
ORDER BY val DESC
FETCH FIRST 5 ROWS ONLY;

FETCH के बिना एक उदाहरण जो पहले के संस्करणों में भी काम करता है:

SELECT * FROM (
   SELECT   val
   FROM     mytable
   ORDER BY val DESC
) WHERE ROWNUM <= 5;

SQL में पेजेशन

SELECT val 
FROM   (SELECT val, rownum AS rnum
        FROM   (SELECT val
                FROM   rownum_order_test
                ORDER BY val)
        WHERE rownum <= :upper_limit)
WHERE  rnum >= :lower_limit ;

इस तरह हम टेबल डेटा को वेब सेर पेज की तरह ही पृष्ठांकित कर सकते हैं

तालिका से एन नंबर के रिकॉर्ड प्राप्त करें

हम पंक्तिबद्ध संख्या का उपयोग करके परिणाम से कोई पंक्तियाँ सीमित नहीं कर सकते हैं

select * from 
( 
  select val from  mytable
) where rownum<=5

यदि हम पहला या अंतिम रिकॉर्ड चाहते हैं तो हम आंतरिक प्रश्न में खंड द्वारा आदेश चाहते हैं जो आदेश के आधार पर परिणाम देगा।

पिछले पांच रिकॉर्ड:

select * from 
( 
    select val from  mytable order by val desc
) where rownum<=5

पहले पांच रिकॉर्ड

select * from 
( 
    select val from  mytable order by val
) where rownum<=5

कई पंक्तियों से M के माध्यम से पंक्ति N प्राप्त करें (Oracle 12c से पहले)

विश्लेषणात्मक फ़ंक्शन का उपयोग करें row_number ():

with t as (
  select col1
  , col2
  , row_number() over (order by col1, col2) rn
  from table
)
select col1
, col2
from t
where rn between N and M; -- N and M are both inclusive

Oracle 12c इसे OFFSET और FETCH साथ अधिक आसानी से FETCH

कुछ पंक्तियों को छोड़ना तो कुछ को लेना

ओरेकल में 12 जी +

SELECT Id, Col1
FROM TableName 
ORDER BY Id
OFFSET 20 ROWS FETCH NEXT 20 ROWS ONLY;

पहले के संस्करणों में

SELECT Id, 
   Col1
 FROM (SELECT Id,
           Col1,
           row_number() over (order by Id) RowNumber
      FROM TableName)
WHERE RowNumber BETWEEN 21 AND 40

परिणाम से कुछ पंक्तियों को छोड़ना

ओरेकल में 12 जी +

SELECT Id, Col1
FROM TableName 
ORDER BY Id
OFFSET 5 ROWS;

पहले के संस्करणों में

SELECT Id, 
   Col1
 FROM (SELECT Id,
           Col1,
           row_number() over (order by Id) RowNumber
      FROM TableName)
WHERE RowNumber > 20


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow