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

MySQL에서 열의 최댓값을 조회하는 두 가지 방법

MySQL에서 특정 열의 최댓값을 조회하려면 ORDER BY 절 또는 집계 함수 MAX()를 사용할 수 있습니다. 이 글에서는 두 가지 방법을 예제와 함께 자세히 살펴보겠습니다.

1. ORDER BY 절 사용하기

ORDER BY로 내림차순 정렬한 후 LIMIT으로 첫 번째 행만 가져오면 최댓값을 구할 수 있습니다. 기본 문법은 다음과 같습니다.

SELECT yourColumnName FROM yourTableName ORDER BY yourColumnName DESC LIMIT 0,1;

먼저 테이블을 생성해 보겠습니다.

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

INSERT 명령으로 레코드를 삽입합니다.

mysql> insert into DemoTable values(790);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(746);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(480);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(880);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(879);
Query OK, 1 row affected (0.20 sec)

SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select * from DemoTable;

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

+--------+
| Number |
+--------+
| 790    |
| 746    |
| 480    |
| 880    |
| 879    |
+--------+
5 rows in set (0.00 sec)

이제 ORDER BY를 활용해 열의 최댓값을 조회하는 쿼리입니다.

mysql> select Number from DemoTable order by Number desc limit 0,1;

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

+--------+
| Number |
+--------+
| 880    |
+--------+
1 row in set (0.00 sec)

2. 집계 함수 MAX() 사용하기

같은 결과를 얻기 위해 집계 함수 MAX()를 사용할 수도 있습니다. 이 방법이 더 간결하고 일반적으로 권장되는 방식입니다.

mysql> select MAX(Number) from DemoTable;

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

+-------------+
| MAX(Number) |
+-------------+
| 880         |
+-------------+
1 row in set (0.00 sec)

두 방법의 차이점

MAX() 함수는 데이터베이스가 인덱스를 활용할 수 있어 대용량 테이블에서 더 효율적입니다. 반면 ORDER BY + LIMIT 방식은 최댓값 외에 상위 N개 값 등 추가 정보가 필요할 때 유용합니다. 단순히 최댓값 하나만 필요하다면 MAX() 함수를 사용하는 것이 좋습니다.