CREATE TABLE table_order_by ( id1 NUMBER(2,0) );
INSERT INTO table_order_by (id1) VALUES (1); INSERT INTO table_order_by (id1) VALUES (6); INSERT INTO table_order_by (id1) VALUES (7); INSERT INTO table_order_by (id1) VALUES (4); INSERT INTO table_order_by (id1) VALUES (5); INSERT INTO table_order_by (id1) VALUES (2); INSERT INTO table_order_by (id1) VALUES (3); COMMIT;Data Visualization:
Ascending order display | Descending order display | ||
SELECT id1 FROM table_order_by ORDER BY id1 ASC; |
SELECT id1 FROM table_order_by ORDER BY id1 DESC; |
||
1 | First 2 rows | 7 | First 2 rows |
2 | 6 | ||
3 | 5 | ||
4 | 4 | ||
5 | 3 | ||
6 | Last 2 rows | 2 | Last 2 rows |
7 | 1 |
-- (1,2) - (3,4,5,6,7) SELECT id1 FROM ( SELECT id1 FROM table_order_by ORDER BY id1 ASC ) t WHERE ROWNUM <= 2 -- Number of rows to display ORDER BY id1 ASCQuery result:
1 2
-- (7,6) - (5,4,3,2,1) SELECT id1 FROM ( SELECT id1 FROM table_order_by ORDER BY id1 DESC ) t WHERE ROWNUM <= 2 -- Number of rows to display ORDER BY id1 DESCQuery result:
7 6
-- (1,2,3,4,5) - (6,7) SELECT id1 FROM ( SELECT id1 FROM table_order_by ORDER BY id1 DESC ) t WHERE ROWNUM <= 2 -- Number of rows to display ORDER BY id1 ASCQuery result:
6 7
-- (7,6,5,4,3) - (2,1) SELECT id1 FROM ( SELECT id1 FROM table_order_by ORDER BY id1 ASC ) t WHERE ROWNUM <= 2 -- Number of rows to display ORDER BY id1 DESCQuery result:
2 1
-- (1,2) - (3,4) - (5,6) - (7) -- current page (3,4) SELECT id1 FROM ( SELECT id1 FROM table_order_by WHERE id1 < 3 -- [1,3,5,7]: First row of the current page ORDER BY id1 DESC ) t WHERE ROWNUM <= 2 -- Number of rows to display per page ORDER BY id1 ASCQuery result:
1 2
-- (7,6) - (5,4) - (3,2) - (1) -- current page (5,4) SELECT id1 FROM ( SELECT id1 FROM table_order_by WHERE id1 > 5 -- [7,5,3,1]: First row of the current page ORDER BY id1 ASC ) t WHERE ROWNUM <= 2 -- Number of rows to display per page ORDER BY id1 DESCQuery result:
7 6
-- (1,2) - (3,4) - (5,6) - (7) -- current page (3,4) SELECT id1 FROM ( SELECT id1 FROM table_order_by WHERE id1 > 4 -- [2,4,6,7]: Last row of the current page ORDER BY id1 ASC ) t WHERE ROWNUM <= 2 -- Number of rows to display per page ORDER BY id1 ASCQuery result:
5 6
-- (7,6) - (5,4) - (3,2) - (1) -- current page (5,4) SELECT id1 FROM ( SELECT id1 FROM table_order_by WHERE id1 < 4 -- [6,4,2,1]: Last row of the current page ORDER BY id1 DESC ) t WHERE ROWNUM <= 2 -- Number of rows to display per page ORDER BY id1 DESCQuery result:
3 2
-- (1,2) - (3,4) - (5,6) - (7) -- page (3,4) SELECT id1 FROM ( SELECT id1 , ROWNUM AS rnum FROM ( SELECT id1 FROM table_order_by ORDER BY id1 ASC ) t1 WHERE ROWNUM <= 4 -- [2,4,6,8]: (Rows per page) * (page number) ) WHERE rnum >= 3 -- [1,3,5,7]: (Rows per page) * ((page number) - 1) + 1 ORDER BY id1 ASCOr using ROW_NUMBER function (provides a more modern alternative):
-- (1,2) - (3,4) - (5,6) - (7) -- page (3,4) SELECT id1 FROM ( SELECT t1.id1 , ROW_NUMBER() OVER (ORDER BY id1 ASC) AS rnum FROM table_order_by t1 ) WHERE rnum >= 3 -- [1,3,5,7]: (Rows per page) * ((page number) - 1) + 1 AND rnum <= 4 -- [2,4,6,8]: (Rows per page) * (page number)Query result:
3 4
-- (7,6) - (5,4) - (3,2) - (1) -- page (5,4) SELECT id1 FROM ( SELECT id1 , ROWNUM AS rnum FROM ( SELECT id1 FROM table_order_by ORDER BY id1 DESC ) t1 WHERE ROWNUM <= 4 -- [2,4,6,8]: (Rows per page) * (page number) ) WHERE rnum >= 3 -- [1,3,5,7]: (Rows per page) * ((page number) - 1) + 1 ORDER BY id1 DESCOr using ROW_NUMBER() function:
-- (7,6) - (5,4) - (3,2) - (1) -- page (5,4) SELECT id1 FROM ( SELECT t1.id1 , ROW_NUMBER() OVER (ORDER BY id1 DESC) AS rnum FROM table_order_by t1 ) WHERE rnum >= 3 -- [1,3,5,7]: (Rows per page) * ((page number) - 1) + 1 AND rnum <= 4 -- [2,4,6,8]: (Rows per page) * (page number)Query result:
5 4