MySQL에서 상위 N개 행을 선택하는 방법
테이블에서 상위 N개 행을 선택하는 것은 데이터베이스를 다룰 때 가장 기본적인 작업이에요. 이 튜토리얼에서는 실용적인 예제와 함께 MySQL에서 이를 수행하는 방법을 알아볼게요.
계속 읽기 전에, 저희의 모던 MySQL 클라이언트인 Beekeeper Studio를 소개할게요. 테이블을 열면 행을 알아서 페이지 단위로 보여주고, 테이블을 우클릭해 SQL: Select Top을 선택하면 쿼리를 바로 만들어 줘요. MySQL에서는 무료로 쓸 수 있으니 여기서 다운로드하세요.
LIMIT 절 사용하기
MySQL의 LIMIT 절은 쿼리 결과 집합에서 반환할 행의 개수를 간단하게 지정하는 방법이에요.
예제: 상위 5개 행 선택하기
다음과 같은 스키마를 가진 employees 테이블이 있다고 가정해 볼게요:
CREATE TABLE employees (
id INT,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
급여를 기준으로 내림차순 정렬해서 상위 5명의 직원을 선택하려고 해요.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5;
동작 원리:
-
ORDER BY salary DESC는 급여가 높은 순서부터 낮은 순서로 행을 정렬해요. -
LIMIT 5는 정렬 후 처음 5개 행만 출력하도록 제한해요.
예상 결과:
+----+----------+--------+
| id | name | salary |
+----+----------+--------+
| 3 | Alice | 90000 |
| 5 | Bob | 85000 |
| 2 | Charlie | 75000 |
| 6 | Diana | 70000 |
| 4 | Edward | 68000 |
+----+----------+--------+
LIMIT으로 동점 처리하기
값이 같은 행이 있을 때는 동점 조건을 따로 처리하지 않으면 LIMIT만으로는 일관된 결과를 얻지 못할 수 있어요. ORDER BY에 컬럼을 더 추가해서 동점을 구분하세요.
예제: 보조 정렬을 추가해 동점 처리하기
급여가 같은 경우를 처리하려면 직원의 id를 보조 정렬 기준으로 사용하세요:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 5;
동작 원리:
id ASC를 추가하면 급여가 같을 때id가 더 낮은 직원이 항상 일관되게 선택돼요.
LIMIT으로 페이지네이션하기
상위 N개 행을 선택하는 것 외에도, 특정 범위의 행을 선택해 결과를 페이지 단위로 나눠야 할 때가 많아요.
예제: 다음 5개 행 선택하기
결과를 페이지로 나누어 급여 기준 6~10번째 행을 선택하려면:
SELECT id, name, salary
FROM employees
ORDER BY salary DESC
LIMIT 5 OFFSET 5;
동작 원리:
-
LIMIT 5는 반환할 행의 개수를 지정해요. -
OFFSET 5는 처음 5개 행을 건너뛰어요.
예상 결과:
상위 5명 다음에 오는 5명의 직원:
+----+---------+--------+
| id | name | salary |
+----+---------+--------+
| 1 | Frank | 67000 |
| 7 | Grace | 64000 |
| 8 | Hannah | 60000 |
| 9 | Ivan | 59000 |
| 10 | Jane | 58000 |
+----+---------+--------+
마무리
MySQL에서 LIMIT 절을 사용해 상위 N개 행을 선택하는 방법은 효율적이고 쉬워요. 동점이 생길 수 있다면 ORDER BY에 컬럼을 추가해서 정렬 순서를 안정적으로 유지하세요. 이 간단한 기법은 분석이나 리포팅을 비롯한 많은 애플리케이션에서, 특히 대용량 데이터셋을 다룰 때 꼭 필요해요.
이 기법들을 익혀 두면 MySQL에서 데이터를 조회하고 다루는 작업을 훨씬 더 자유롭게 제어할 수 있어요.
Beekeeper Studio는 무료 오픈 소스 MySQL GUI예요
요즘 MySQL 작업에 Beekeeper Studio를 쓰고 있는데, 금세 제가 가장 좋아하는 데이터베이스 도구 중 하나가 됐어요. 인터페이스가 깔끔하고 현대적이며 군더더기가 없어서, 다른 도구들처럼 복잡하지 않고 쿼리에만 집중하기 좋아요. - Surendra Singh
Beekeeper Studio는 빠르고 직관적이며 사용하기 쉬운 MySQL 클라이언트예요. 다른 데이터베이스도 많이 지원하고, Windows, Mac, Linux에서 모두 잘 작동해요.
MySQL 사용자들의 Beekeeper Studio 후기
phpMyAdmin을 몇 년 동안 쓰다가 이 프로그램을 선택했는데, 훨씬 높은 품질의 세계로 들어선 느낌이에요. 여기서는 사용자를 진심으로 배려한다는 게 느껴졌어요. 콘셉트, 구현, 실제 사용 경험까지, 이 모든 것에 대해 Matthew에게 진심으로 감사드려요.
정말 멋진 도구예요. 지금까지 써 본 Postgres와 MySql DB 관리용 IDE 중 가장 실용적이에요. 번거로움 없이 그냥 잘 돌아가요 :-)