개인 공부 (23.07~

[SQL] offset 사용법

Song쏭 2023. 10. 31. 18:07

페이지 나누기 기능에 주로 사용한다.

커뮤니티 사이트 등에서 게시판 하단 부분 [ 1 2 3 4 5 다음 ] 과 같이 표시된 것이 그 예이다.

 

페이지 나누기 기능은 LIMIT를 사용해 간단히 구현할 수 있다. 

한 페이지당 5건의 데이터를 표시하도록 한다면 

첫번째 페이지의 경우 LIMIT 5로 결과값을 표시하면 된다.

그 다음 페이지에서는 6번째 행부터 5건의 데이터를 표시하도록 한다.

이때 6번째 행부터 라는 표현은 결과값으로부터 데이터를 취득할 위치를 가리키는 것으로

LIMIT구에 OFFSET으로 지정할 수 있다.

 

예시

하나의 테이블이 위와 같고, 한 페이지에 5개씩 표시한다고 가정하자.

 

OFFSET에 의한 시작 위치 지정은 LIMIT 뒤에 기술한다. 위치 지정은 0부터 시작하는 컴퓨터 자료구조의 배열 인덱스를 떠올리면 이해가 쉽다.

간단하게 정리하면 시작할행 빼기(-) 1로 기억하면 좋다.

예를들어 첫번째 행부터 5건을 취득한다면, 1-1로 위치는 0이 되어 OFFSET 0으로 지정하면 되는 것이고,

여섯번째 행부터 5건을 취득한다면, 6-1로 위치는 5가 되어 OFFSET 5로 지정하면 되는 것이다.

 

첫번째 페이지에 표시할 데이터를 구하기 위해서는 

SELECT * FROM EXAMPLE LIMIT 5 OFFSET 0;    (OFFSET은 생략가능하며 기본값은 0이다.)

결과 : 1 2 3 4 5

 

두번째 페이지에 표시할 데이터를 구하기 위해서는

SELECT * FROM EXAMPLE LIMIT 5 OFFSET 5;

결과 : 6 7

 

 

* SQL 첫걸음 도서 공부 중 기록