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

MySQL에서 학생 점수 테이블의 두 번째로 높은 값 조회하기

테이블에서 두 번째로 높은 값을 조회하려면 ORDER BY DESC와 함께 LIMIT 1,1을 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    StudentScore int
);
Query OK, 0 rows affected (0.56 sec)

샘플 데이터 삽입

insert 명령을 사용하여 테이블에 학생 점수 레코드를 몇 개 삽입합니다.

mysql> insert into DemoTable values(89);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(69);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(97);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(99);
Query OK, 1 row affected (0.12 sec)

전체 레코드 확인

select 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

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

+--------------+
| StudentScore |
+--------------+
|           89 |
|           69 |
|           97 |
|           99 |
+--------------+
4 rows in set (0.00 sec)

두 번째로 높은 값 조회 쿼리

두 번째로 높은 값을 가져오는 쿼리는 다음과 같습니다.

mysql> select *from DemoTable order by StudentScore DESC limit 1,1;

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

+--------------+
| StudentScore |
+--------------+
|           97 |
+--------------+
1 row in set (0.00 sec)

쿼리 동작 원리

이 쿼리가 어떻게 동작하는지 살펴보겠습니다.

  • ORDER BY StudentScore DESC: 점수를 내림차순으로 정렬합니다. 즉, 99 → 97 → 89 → 69 순서로 정렬됩니다.
  • LIMIT 1,1: 첫 번째 숫자 1은 건너뛸 행의 수(offset)를, 두 번째 숫자 1은 반환할 행의 수를 의미합니다. 따라서 가장 높은 점수인 99를 건너뛰고 그 다음 점수인 97 하나만 반환됩니다.

이 방법을 응용하면 세 번째, 네 번째 등 N번째로 높은 값도 손쉽게 조회할 수 있습니다. 예를 들어 세 번째로 높은 값을 구하려면 LIMIT 2,1을 사용하면 됩니다.