Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 가장 높은 값을 가진 상위 3개 레코드 조회하는 방법

MySQL에서 특정 컬럼 기준으로 가장 큰 값을 가진 상위 N개의 레코드를 조회하려면 ORDER BY ... DESC와 함께 LIMIT 절을 사용하면 됩니다. 이 글에서는 학생 점수 테이블을 예로 들어, 점수가 가장 높은 3명의 학생 데이터를 가져오는 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 학생 이름과 점수를 저장할 테이블을 생성합니다.

mysql> create table DemoTable1614
    -> (
    -> StudentName varchar(20),
    -> StudentScore int
    -> );
Query OK, 0 rows affected (0.78 sec)

StudentName은 문자형(varchar) 컬럼, StudentScore는 정수형(int) 컬럼으로 구성된 간단한 테이블입니다.

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 여러 학생의 레코드를 추가합니다.

mysql> insert into DemoTable1614 values('Adam',65);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1614 values('Chris',89);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1614 values('Bob',58);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1614 values('Sam',98);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1614 values('Mike',87);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1614 values('Carol',79);
Query OK, 1 row affected (0.12 sec)

총 6명의 학생 데이터가 테이블에 저장되었습니다.

3. 전체 레코드 확인하기

SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1614;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Adam        |           65 |
| Chris       |           89 |
| Bob         |           58 |
| Sam         |           98 |
| Mike        |           87 |
| Carol       |           79 |
+-------------+--------------+
6 rows in set (0.00 sec)

4. 점수가 가장 높은 상위 3개 레코드 조회하기

핵심은 ORDER BY 절에 DESC(내림차순) 옵션을 지정하고, LIMIT 3으로 결과 개수를 제한하는 것입니다.

mysql> select * from DemoTable1614 order by StudentScore DESC LIMIT 3;

실행 결과는 다음과 같습니다.

+-------------+--------------+
| StudentName | StudentScore |
+-------------+--------------+
| Sam         |           98 |
| Chris       |           89 |
| Mike        |           87 |
+-------------+--------------+
3 rows in set (0.00 sec)

정리

ORDER BY 컬럼명 DESC LIMIT N 패턴을 활용하면 특정 컬럼 기준으로 가장 큰 값을 가진 상위 N개의 레코드를 손쉽게 조회할 수 있습니다. 이번 예제에서는 StudentScore를 내림차순 정렬하여 Sam(98점), Chris(89점), Mike(87점), 즉 점수가 가장 높은 3명의 학생을 성공적으로 가져왔습니다. 반대로 가장 낮은 값을 조회하고 싶다면 DESC 대신 오름차순(ASC)을 사용하면 됩니다.