How to add an offset in a "select" query in Oracle 11g.
I only know how to add the limit by e.g rownum <= 5
this question is not a duplicate, I already checked the other questions and are not related to mine.
So, how to add the offset in Oracle 11g ?
You can do it easily on 12c by specifying OFFSET.
In 12c,
SELECT val
FROM table
ORDER BY val
OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;
To do the same on 11g and prior, you need to use ROWNUM twice, inner query and outer query respectively.
The same query in 11g,
SELECT val
FROM (SELECT val, rownum AS rnum
FROM (SELECT val
FROM table
ORDER BY val)
WHERE rownum <= 8)
WHERE rnum > 4;
Here OFFSET is 4.
You can use ROW_NUMBER function for that.
Maybe this helps:
SELECT *
FROM(SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ...) rn -- whatever ordering you want
FROM your_table t
)
WHERE rn >= ... -- your offset
Hope that helps
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With