이번에는 LIMIT 키워드에 대해서 살펴보겠습니다. LIMIT는 단어 그대로 무엇인가를 '제한'하는 기능을 하게 됩니다. 그럼, 무엇을 제한하는지 여부가 중요하겠죠? 바로, 쿼리를 통해 출력하는 데이터의 행(row)의 개수를 제한하게 됩니다.
우리가 회원 정보가 1만건이 있다고 했을 때, 이 중 5~10개만 먼저 표시하고 싶을 때가 있을 것입니다. 이런 경우에 사용하는 간단한 출력 제한 키워드입니다. 기본적으로 아래와 같은 형태로 사용하게 됩니다.
select *
from table_name
limit N -- 출력하려는 행의 개수
간단하게 LIMIT 키워드로 출력하고자 하는 행의 개수를 지정하면 됩니다. 그런데 여기서 한가지 더 기억할 것이 있습니다. 바로 OFFSET 키워드입니다. OFFSET 키워드를 사용하게 되면, LIMIT으로 행의 출력 개수를 제한할 때 출력할 행의 시작 위치를 지정할 수 있게 됩니다. 즉, "X번째 부터 10개 출력"과 같은 조건 부여가 가능해지는 것입니다.
select *
from table_name
limit N offset M
하지만 OFFSET 사용 시에도 주의할 점이 있습니다. OFFSET에 지정하는 숫자는 행의 인덱스 넘버를 기반으로 작성해야 한다는 점입니다. 즉, 쉽게 말해 0부터 시작한다는 점이죠. 만일 어떤 데이터의 ID가 1~99까지 있다고 하더라도 OFFSET에서는 인덱스 넘버로 카운트하기 때문에 실제로는 0~98이 되는 것입니다.
간단히 예제를 통해서 살펴보겠습니다.
FILM테이블에서 FILM_ID, TITLE, RELEASE_YEAR를 출력하는데 5개만 출력해 보도록 하겠습니다. 단! 여기서 아무거나 5개를 출력하는 게 아니라 FILM_ID 순서를 기준으로 1~5번만 출력해야 합니다. 한번 쿼리를 작성해 보겠습니다.
select film_id
, title
, release_year
from film f
order by film_id asc
limit 5
이번에는 위의 예제에 조건을 더해보겠습니다. 위의 조건과 모두 동일한데, 한 가지 추가되는 조건이 있습니다. 바로 FILM_ID가 4번인 작품부터 5개, 즉 FILM_ID가 4~8인 작품들만 출력되도록 조건을 수정해 봅시다.
말씀드렸듯, LIMIT에 OFFSET을 추가하면 됩니다. 단, 인덱싱은 0번부터 진행되므로 이를 감안해 OFFSET 숫자를 입력해야 합니다.
select film_id
, title
, release_year
from film f
order by film_id asc
limit 5
offset 3
'Data Literacy > SQL' 카테고리의 다른 글
Chapter 1. 데이터 조회, 필터링(8) - IN 1 (0) | 2023.05.10 |
---|---|
Chapter 1. 데이터 조회, 필터링(7) - FETCH(w/OFFSET) (1) | 2023.05.06 |
Chapter 1. 데이터 조회, 필터링(5) - 실전 예제1 [2/2] (0) | 2023.05.03 |
Chapter 1. 데이터 조회, 필터링(5) - 실전 예제1 [1/2] (0) | 2023.05.01 |
Chapter 1. 데이터 조회, 필터링(4) - WHERE (0) | 2023.04.27 |