Database/MySQL

(MySQL) LIMIT, OFFSET: 검색 결과의 행 개수 제한하기

고니자니 2023. 2. 19. 20:21
반응형
  • LIMIT: 출력된는 행의 개수 제한
  • Offset: 출력되는 시작행 설정

SQL의 SELECT 명령어의 결과값으로 반환되는 행의 개수를 제한할 수 있습니다.

Limit 구절은 표준 SQL은 아닙니다. MySQL과 PostgresSQL에서 사용할 수 있는 문법입니다.

Limit 구절은 where 구 또는 order by 구의 뒤쪽에 기술합니다.

Microsoft SQL Server 에서는 MySQL의 LIMIT과 비슷한 기능을 하는 'TOP' 구문이 있습니다.

Oracle에서는 limit이나 top이 없습니다. Where에서 조건을 지정해서 행의 개수를 제한할 수 있습니다.

; MySQL
SELECT * FROM 테이블명 [WHRE 조건신] [ORDER BY 열명] LIMIT 개수 [OFFSET 시작행];  
; SQL Server
SELECT TOP 개수 FROM 테이블명;
;Oracle
SELECT * FROM 테이블명 WHRE ROWNUM <= 5;

 

다음은 학생(student) 테이블의 내용입니다.

학생(student) 테이블

 

학생 테이블의 출력되는 행의 수를 7개로 제한합니다.

mysql> select * from student LIMIT  7;

 

다음 코드는 학번(hakbun)이 큰 값부터 5명의 학생만 출력하는 SQL 구문입니다.

mysql> select * from student order by hakbun desc LIMIT 5;

 

OFFSET 

SELECT * FROM 테이블 LIMIT 개수 OFFSET 시작행;

OFFSET을 이용해서 출력되는 시작행을 설정할 수 있습니다. Offset은 생략하면 기본값으로 0입니다.

 

다음 코드는 offset 3부터 5개의 행을 출력하는 예입니다. Offset은 0부터 시작됩니다.

mysql> select * from student limit 5 offset 3;

 

아마 웹상의 게시판 목록을 많이 봤을 것입니다.

5페이지를 선택하면, 5페이지부터 10개의 리스트가 출력됩니다. 이런 기능의 구현에 offset이 사용될 수 있습니다.

 

 

반응형