Goal

  • LIMIT문을 이용해서 결과값으로 반환되는 행을 제한할 수 있다.
  • OFFSET문을 이용해서 PAGINATION 기능 로직을 처리 할 수 있다.

1. 행수 제한

SELECT 열명 FROM 테이블명 LIMIT 행수 [OFFSET 시작행]

LIMIT구는 표준 SQL은 아닙니다. MySQL, PostgreSQL에서 사용할 수 있는 문법입니다. LIMIT구는 SELECT 명령의 마지막에 지정하는 것으로 WHERE구나 ORDER BY구의 뒤에 지정 합니다.

SELECT * FROM test;
no
1
2
3
4
5
6
7

전체 행은 총 7개이지만, LIMIT구를 이용해서 3개의 행이 출력되도록 하였습니다.

SELECT *FROM test LIMIT 3;
no
1
2
3

2. 정렬한 후 제한하기

LIMIT와 WHERE은 기능과 내부처리 순서가 전혀 다릅니다. LIMIT는 반환할 행수를 제한하는 기능으로, WHERE구로 검색한 후 ORDER BY로 정렬된 뒤 최종적으로 처리 됩니다.

SELECT *FROM test ORDER BY no DESC LIMIT 3;
no
7
6
5

3. 오프셋 지정

※ pagination 이란?
웹 시스템에서는 클라이언트의 브라우저를 통해 페이지 단위로 화면에 표시할 내용을 처리 합니다.대량의 데이터를 하나의 페이지에표시하는 것은 기능적으로도 속도 측면에서도 효율적이지 못하므로 페이지 나누기 기능을 사용 합니다.

한 페이지당 5건의 데이터를 표시하도록 한다면 첫 번째 페이지의 경우 LIMIT 5로 결과값을 표시하면 될 것입니다. 그 다음 페이지에는 6번째 행 부터 5건의 데이터를 표시하도록 합니다. 6번째 행 부터 라는 표현은 'OFFSET 5' 로 지정할 수 있습니다.

SELECT * FROM test LIMIT 3 OFFSET 0;
no
1
2
3
SELECT *FROM  test LIMIT 3 OFFSET 3;
no
4
5
6