Search

3-8. TOP-N

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
복사