Oracle Database
एक क्वेरी (पेजिनेशन) द्वारा दी गई पंक्तियों को सीमित करना
खोज…
पंक्ति को सीमित करने वाले खंड के साथ पहले एन पंक्तियां प्राप्त करें
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