DBMS/MySQL

[MySQL]LIMIT, OFFSET

yxxjxxeee 2025. 4. 30. 09:38

LIMIT

LIMIT은 가져올 레코드 수를 제한하는 키워드다. 예를 들어, LIMIT 5라고 하면 결과에서 앞에서부터 5개의 레코드만 가져온다.

SELECT * FROM Customers
LIMIT 5;

위 쿼리는 Customers 테이블에서 가장 앞의 5개 레코드만 반환한다.

OFFSET

OFFSET은 처음부터 건너뛸 레코드 수를 지정할 때 사용된다. 예를 들어, OFFSET 3이라고 하면 앞의 3개 레코드는 건너뛰고 그 다음부터 결과를 반환한다.

SELECT * FROM Customers
OFFSET 3;

※ 단독 사용은 일부 DB에서 오류가 날 수 있으므로 일반적으로는 LIMIT과 함께 사용한다. 그 이유는 OFFSET만 사용하면 몇 개의 결과를 반환할지에 대한 정보가 없기 때문이다.

LIMIT과 OFFSET 함께 사용하기

SELECT * FROM Customers
LIMIT 5 OFFSET 10;

위 쿼리는 11번째 레코드부터 시작해서 5개를 반환한다. 즉, 10개 건너뛰고, 다음 5개 가져오라는 의미이다.

결과: 11번째부터 15번째까지 레코드

SELECT * FROM Customers
LIMIT 2 OFFSET 1;

위 쿼리는 2번째 레코드부터 시작해서 2개를 반환한다. 즉, 1개 건너뛰고, 다음 2개 가져오라는 의미이다.

결과: 2번째와 3번째 레코드

페이징 처리

-- 페이지당 10개, 3페이지
SELECT * FROM Products
LIMIT 10 OFFSET 20;  -- (페이지번호 - 1) * 페이지당 개수

페이지당 10개씩 보여줄 때 이 쿼리는 3페이지(21번째부터 30번째)에 해당하는 상품 목록만 보여주는 쿼리이다.