LIMIT
Top-N은 특정한 기준으로 정렬된 데이터를 일부만 보여주는 기술을 뜻한다. MySQL은 ORDER BY 절 뒤에 LIMIT를 사용해 구현할 수 있다.
-- [SQL-3-8-1]
-- ItemNm으로 오름차순으로 정렬해 세 건만 조회
SELECT ItemId ,ItemNm ,ItemSizeCd
FROM startdb.Item
WHERE ItemCat = 'COF'
ORDER BY ItemNm ASC
LIMIT 3;
ItemId ItemNm ItemSizeCd
------ ------------- ----------
AMB Americano(B) BIG
AMR Americano(R) REG
CLB Cafe Latte(B) BIG
-- [SQL-3-8-2]
-- LaunchDt로 내림차순, ItemId로 오름차순, 7건만 조회
SELECT ItemId ,ItemNm ,ItemSizeCd ,LaunchDt
FROM startdb.Item
WHERE ItemCat = 'COF'
ORDER BY LaunchDt DESC ,ItemId ASC
LIMIT 7;
ItemId ItemNm ItemSizeCd LaunchDt
------ ------------------ ---------- ----------
EINR Einspanner(R) REG 2023-04-01
FLTR Flat White(R) REG 2023-04-01
IEINR Iced Einspanner(R) REG 2023-04-01
IFLTR Iced Flat White(R) REG 2023-04-01
AMB Americano(B) BIG 2019-01-01
AMR Americano(R) REG 2019-01-01
CLB Cafe Latte(B) BIG 2019-01-01
SQL
복사
OFFSET을 사용해 몇 건을 건너 뛰고 TOP-N을 출력할 수도 있다.
-- [SQL-3-8-3]
-- ItemNm으로 오름차순 여섯건 조회.
SELECT ItemId ,ItemNm ,ItemSizeCd
FROM startdb.Item
WHERE ItemCat = 'COF'
ORDER BY ItemNm ASC
LIMIT 6;
ItemId ItemNm ItemSizeCd
------ ------------- ----------
AMB Americano(B) BIG
AMR Americano(R) REG
CLB Cafe Latte(B) BIG
CLR Cafe Latte(R) REG
EINR Einspanner(R) REG
FLTR Flat White(R) REG
-- [SQL-3-8-4]
-- ItemNm으로 오름차순, 앞쪽 세 건을 건너뛰고 다음 세건만 출력
SELECT ItemId ,ItemNm ,ItemSizeCd
FROM startdb.Item
WHERE ItemCat = 'COF'
ORDER BY ItemNm ASC
LIMIT 3 OFFSET 3;
ItemId ItemNm ItemSizeCd
------ ------------- ----------
CLR Cafe Latte(R) REG
EINR Einspanner(R) REG
FLTR Flat White(R) REG
SQL
복사
ORDER BY를 제외하고 LIMIT만 사용할 수도 있다. 몇 건의 샘플 데이터를 빠르게 확인하고 싶다면 이처럼 하는 것이 좀 더 도움이 될 수 있다. (ORDER BY가 포함되면 상황에 따라 DBMS 내부적인 데이터 정렬이 발생한 후에 LIMIT 가 처리된다.)
-- [SQL-3-8-5]
SELECT *
FROM startdb.Item
WHERE ItemCat = 'COF'
LIMIT 10; -- > ORDER BY 없이 LIMIT만 사용
SQL
복사