이 글은 MySQL LIMIT과 LIMIT OFFSET 사용법 및 예제를 쉽게 정리한 글입니다.
MySQL LIMIT OFFSET
출력할 행(레코드) 수 지정할 때, 페이징 처리에 사용한다.
*페이징 처리: 화면 내 보이는 데이터 범위를 지정하는 방법, 웹사이트 게시판에서 흔히 보임 (ex. 1, 2, 3,... 다음>).
MySQL LIMIT 사용법
LIMIT은 특정 개수의 행만 출력할 때 사용합니다.
SELECT [컬럼명]
FROM [테이블명]
WHERE [조건식]
LIMIT [출력할 행 개수];
MySQL LIMIT 사용법 예제
샘플 테이블 score_info입니다.
class | score |
eng | 89 |
math | 90 |
art | 65 |
history | 74 |
music | 59 |
p.e | 94 |
SELECT class, score
FROM score_info
WHERE scroe >= 70 -- 70 이상 score만 선택
ORDER BY score DESC -- score 내림차순
LIMIT 3; -- 행 3개만 출력
LIMIT 3 없이, ORDER BY까지만 실행한다면 총 4개의 행이 출력됩니다.
- 94(p.e), 90(math), 89(eng), 74(history)
하지만 LIMIT 3은 행 3개만 출력하는 것이므로 score 94, 90, 89만 출력됩니다.
class | score |
p.e | 94 |
math | 90 |
eng | 89 |
MySQL LIMIT OFFSET
LIMIT OFFSET은 시작행부터 특정 행 개수만 출력합니다.
즉, 부분적으로 원하는 범위만 지정할 때 사용합니다.
이때 시작행 입력 시 유의할 점은 1행은 숫자 0이라는 점입니다.
예를 들어, 세 번째 행을 시작점으로 네 개의 행을 출력하려면 LIMIT 4 OFFSET 2;
>> 3, 4, 5, 6 행만 출력됨.
SELECT [컬럼명]
FROM [테이블명]
WHERE [조건식]
LIMIT [출력할 행 개수] OFFSET [시작 행];
OFFSET은 생략 가능합니다. 하지만 LIMIT절 문법이 달라지는 점 유의하세요!
OFFSET 입력 시, OFFSET 뒤에 시작행 입력합니다.
반면 생략하면, LIMIT 뒤에 시작행 입력합니다.
'입력OFFSET시작, 생략LIMIT시작'으로 기억하면 좋습니다...
SELECT [컬럼명]
FROM [테이블명]
WHERE [조건식]
LIMIT [시작 행], [출력할 행 개수]; -- 콤마(,) 입력해서 OFFSET 생략, 문법 바뀜.
MySQL LIMIT OFFSET 사용법 예제
조금 변형한 샘플 테이블 score_info입니다.
class | score |
eng | 89 |
math | 90 |
art | 65 |
history | 89 |
music | 59 |
p.e | 94 |
SELECT class, score, ROW_NUMBER()OVER(ORDER BY score DESC) rank
FROM score_info
WHERE score >= 70
LIMIT 1, 3; -- 2번째 행부터 3개 행만 출력.
2번째 행부터 3개 행만 출력했기에 가장 높은 점수(94)는 제외되었습니다.
그리고 두 번째로 높은 점수(90)부터 3개의 행(90, 89, 89)만 출력되었습니다.
class | score | rank |
math | 90 | 2 |
eng | 89 | 3 |
history | 89 | 4 |
만약 LIMIT OFFSET 없이, WHERE절까지만 실행하면 다음과 같습니다.
(score 기준 70 이상, 공동 순위 없이, 내림차순 정렬)
class | score | rank |
p.e | 94 | 1 |
math | 90 | 2 |
eng | 89 | 3 |
history | 89 | 4 |
*ROW_NUMBER함수는 공동 순위 없이 순위를 정렬할 때 사용합니다. 때문에 eng과 history의 score는 같지만, rank가 다릅니다.
*순위 관련 추천 글
'SQL > MySQL' 카테고리의 다른 글
MySQL Workbench 날짜 컬럼 데이터 타입과 날짜 형식 바꾸기 (0) | 2024.02.28 |
---|---|
MySQL LENGTH, CHAR_LENGTH 함수 사용법과 예시 (1) | 2024.02.08 |
MySQL SELECT절 서브 쿼리(스칼라 서브 쿼리) 기초 정리 (0) | 2023.09.28 |
MySQL EXTRACT() 함수 사용법, 다양한 예제 정리 (0) | 2023.09.27 |
MySQL 윈도우 재시작 초간단 방법(서버 재실행) (0) | 2023.09.23 |