back-end/DB
7. 페이징 처리
림가이드
2023. 4. 4. 17:14
: 데이터는 엄청 방대해서 한꺼번에 다 볼 수 없다.
그래서 특정 위치부터 특정개수까지 내려주는 페이징 처리를 살펴보자.
- MySQL, MariaDB : limit을 이용하여 페이징 처리
- Oracle : ROWNUM
- MSSQL : OFFSET, FETCH
ex) member table에서 3번째 행부터 두 개 가져오기
select * from member limit 2, 2;
ex) member table을 이름으로 내림차순한 결과 출력. 그리고 이름으로 내림차순하여 각 행이 몇번째 표시하는지까지 출력
select *,
row_number() over (order by member.name desc) as row_index
from member
order by member.name desc;
ex) 위의 결과에서 세번째 행부터 2개의 데이터만 출력
select *,
row_number() over (order by member.name desc) as row_index
from member
order by member.name desc
limit 2,2;
실제로 어떤 사이트의 게시글에서 10개 보여주고 다음 페이지로 넘어가 다시 10개 보여주는 그런 기능의 SQL문?
ex) 0~1까지 출력
select * from (select *
from (select *,
row_number() over (order by member.name desc) as row_index
from member
order by member.name desc) t1
where row_index <= 2) t2
where row_index > 0;
ex) 3~4까지 출력
select * from (select *
from (select *,
row_number() over (order by member.name desc) as row_index
from member
order by member.name desc) t1
where row_index <= 4) t2
where row_index > 2;