본문 바로가기

DEVELOPMENT/SQL

[SQL] 결과 행 제한

행수 제한

 

LIMIT 구는 표준 SQL은 아니다. MySQL과  PostgreSQL에서 사용할 수 있는 문법이다.

LIMIT 구는 SELECT 명령의 마지막에 지정하는 것으로 WHERE 구나 ORDER BY 구의 뒤에 지정한다.

LIMIT로 지정하는 것은 '최대 행수'이다. 만약 테이블에 하나의 행만 있다면 LIMIT 3으로 지정해도 1개의 행이 반환된다.

-- 형식
SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 LIMIT 행수

-- 예시
SELECT * FROM sample1 LIMIT 3;
SELECT * FROM sample1 ORDERY BY no DESC LIMIT 3;

 

LIMIT를 사용할 수 없는 데이터베이스에서의 행 제한하려면 ROWNUM이라는 열을 사용해 WHERE 구로 조건을 지정하여 행을 제한할 수 있다.

SELECT * FROM sample1 WHERE ROWNUM <= 3;

 

 

오프셋 지정

 

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

 

이 페이지 나누기 기능은 LIMIT를 사용해 간단히 구현할 수 있다. 한 페이지당 5건의 데이터를 표시하도록 한다면 첫 번째 페이지의 경우 LIMIT 5로 결괏값을 표시하면 된다. 그 다음 페이지에서는 6번째 행부터 5건의 데이터를 표시하도록 한다. 이때 '6번째 행부터'라는 표현은 결괏값으로부터 데이터를 취득할 위치를 가리키는 것으로, LIMIT 구에 OFFSET으로 지정할 수 있다.

 

OFFSET에 의한 시작 위치 지정은 LIMIT 뒤에 기술한다. 위치 지정은 '시작할 행 - 1'로 지정한다.

4행부터 3건의 데이터를 표시하려면 LIMIT 3 OFFSET 3으로 지정하면 된다.

-- 형식
SELECT 열명 FROM 테이블명 LIMIT 행수 OFFSET 위치

-- 예시
SELECT * FROM sample1 LIMIT 3 OFFSET 3;

 

 

 

 

'DEVELOPMENT > SQL' 카테고리의 다른 글

[SQL] 날짜 연산  (0) 2023.05.30
[SQL] 문자열 연산  (0) 2023.05.30
[SQL] 패턴 매칭  (0) 2023.05.30
[SQL] 데이터베이스와 SQL  (0) 2023.05.30
[SQL] INNER JOIN, OUTER JOIN  (0) 2023.04.02