SQL의 LIMIT / OFFSET (또는 TOP) 절은 쿼리 결과로 반환되는 행의 수를 제한하거나, 특정 지점부터의 행을 건너뛰고 가져올 때 사용됩니다. 이는 특히 페이지네이션(Pagination) 기능을 구현하거나, 상위 N개의 결과를 조회할 때 매우 유용합니다.

1. LIMIT / OFFSET (주로 MySQL, PostgreSQL, SQLite)

LIMIT은 반환할 최대 행 수를 지정하고, OFFSET은 건너뛸 시작 행 수를 지정합니다.

문법:

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC]
LIMIT row_count OFFSET offset_value;

예시 1: 상위 5개 주문 조회

SELECT OrderID, Amount
FROM Orders
ORDER BY Amount DESC
LIMIT 5;

예시 2: 페이지네이션 (두 번째 페이지의 10개 항목 조회)

데이터를 한 페이지에 10개씩 보여줄 때, 1페이지는 0부터 10개, 2페이지는 10부터 10개를 가져와야 합니다.

- 첫 번째 페이지 (10개): OFFSET 0, LIMIT 10
SELECT OrderID, OrderDate
FROM Orders
ORDER BY OrderDate DESC
LIMIT 10 OFFSET 0;
-- 두 번째 페이지 (다음 10개): OFFSET 10, LIMIT 10
SELECT OrderID, OrderDate
FROM Orders
ORDER BY OrderDate DESC
LIMIT 10 OFFSET 10;

주의사항: LIMITOFFSET을 사용할 때는 ORDER BY 절을 함께 사용하는 것이 매우 중요합니다. ORDER BY가 없으면 데이터베이스 시스템이 행을 반환하는 순서가 보장되지 않으므로, 쿼리를 재실행할 때마다 다른 결과가 나올 수 있습니다.

2. TOP (주로 SQL Server)

TOP 절은 SELECT 키워드 바로 뒤에 위치하며, 반환할 행의 최대 수를 지정합니다. PERCENT 키워드를 사용하여 백분율로 지정할 수도 있습니다.

문법:

SELECT TOP (expression) [PERCENT] [WITH TIES] column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC];