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

MySQL에서 테이블의 최댓값 상위 2개 조회하기 – ORDER BY와 LIMIT 활용법

MySQL에서 테이블의 특정 열을 기준으로 가장 큰 값 2개를 조회하려면 ORDER BY 절과 LIMIT 절을 함께 사용하면 됩니다. 열 값을 내림차순(DESC)으로 정렬한 후, LIMIT 2를 지정하여 상위 2개 행만 가져오는 방식입니다.

select *from yourTableName order by yourColumnName DESC LIMIT 2;

1단계: 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Value int
-> );
Query OK, 0 rows affected (0.54 sec)

2단계: 데이터 삽입하기

insert 명령어를 사용해 테이블에 샘플 데이터를 입력합니다.

mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable values(70);
Query OK, 1 row affected (0.28 sec)

mysql> insert into DemoTable values(40);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(120);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(98);
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values(105);
Query OK, 1 row affected (0.19 sec)

3단계: 전체 데이터 확인하기

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

mysql> select *from DemoTable;

출력 결과

+-------+
| Value |
+-------+
| 90 |
| 70 |
| 40 |
| 120 |
| 98 |
| 105 |
+-------+
6 rows in set (0.00 sec)

4단계: 가장 큰 값 2개 조회하기

다음 쿼리는 Value 열을 기준으로 내림차순 정렬한 뒤, 상위 2개의 레코드만 반환합니다.

mysql> select *from DemoTable order by Value DESC LIMIT 2;

출력 결과

+-------+
| Value |
+-------+
| 120 |
| 105 |
+-------+
2 rows in set (0.00 sec)

동작 원리 정리

위 쿼리가 동작하는 과정은 다음과 같습니다.

1. 정렬: ORDER BY Value DESCValue 열의 값을 큰 순서대로 정렬합니다. 즉, 120 → 105 → 98 → 90 → 70 → 40 순으로 배치됩니다.

2. 제한: LIMIT 2가 정렬된 결과 중 앞의 2개 행만 반환하므로, 자연스럽게 최댓값과 두 번째로 큰 값인 120과 105가 조회됩니다.

이 패턴은 상위 N개 데이터를 구하는 가장 간단하고 널리 쓰이는 방법입니다. 참고로 동점자 처리나 그룹별 최댓값 조회가 필요하다면 DENSE_RANK() 같은 윈도우 함수를 활용하는 것도 좋은 대안입니다.