DB/Oracle

ORACLE 오라클 rownum을 이용하여 페이징 처리하기

개발로짜 2014. 8. 15. 18:21


2014/08/15 - [DB/MySQL] - MySQL LIMIT를 사용하여 페이징쿼리를 동작시켜보자


2014/08/15 - [DB/MSSQL] - MS-SQL 2005 이상 row_number() over(order by 정렬조건) 을 이용하여 페이징쿼리를 동작시켜보자



이번에는 ORACLE의  rownum 을 이용하여 페이징 처리를 다루도록 보도록 하자



1.  create table 생성

CREATE TABLE PAGE_TABLE (
	"IDX" NUMBER,
 	"TITLE" VARCHAR2(100),
 	"CONTENT" VARCHAR2(200)
) 

2. 가상의 데이터 IMPORT


page_table_data.sql



그렇다면 이제 페이징 테스트를 해보도록 하겠음.

각 페이징 처리를 할때마다 20개씩 출력해보도록 하겠다.


쿼리는 다음과 같다.

-- 1페이지 
select *
from (SELECT *
		FROM (
  			SELECT rownum rnum,idx,title,content
    		FROM page_table
			) pagetable
		where rnum <= 20
	)
where rnum >= 1;
-- 2페이지
select *
from (SELECT *
		FROM (
  			SELECT rownum rnum,idx,title,content
    		FROM page_table
			) pagetable
		where rnum <= 40
	)
where rnum >= 21;
.
.
.
-- 5페이지
select *
from (SELECT *
		FROM (
  			SELECT rownum rnum,idx,title,content
    		FROM page_table
			) pagetable
		where rnum <= 100
	)
where rnum >= 81;

3, 실 행 하 기

1페이지





2페이지





5페이지









ROWNUM


쉽게 생각해서 테이블 데이터아 rownum이라는 컬럼을 추가해서 1부터 출력된 테이블의 갯수를 

순차적으로 증가 시켜주는거라고 생각하면 될것이다.



슈퍼맨슈퍼맨슈퍼맨



도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!