MySQL에서 두 개 이상의 필드(컬럼)에 저장된 값 중 가장 큰 값을 확인하려면 GREATEST() 함수를 사용하면 됩니다. 이 함수는 전달된 여러 인자 중 가장 큰 값을 반환하며, MAX() 함수와 함께 사용하면 각 컬럼의 최대값을 한 번에 비교할 수 있습니다.
GREATEST() 함수 기본 문법
SELECT GREATEST(MAX(yourColumnName1), MAX(yourColumnName2), ............... MAX(yourColumnNameN)) FROM yourTableName;
문법이 어떻게 동작하는지 실제 예제를 통해 살펴보겠습니다. 먼저 세 개의 컬럼을 가진 테이블을 생성합니다.
예제 테이블 생성
mysql> create table GreatestOfTwoOrMore
-> (
-> Marks1 int,
-> Marks2 int,
-> Marks3 int
-> );
Query OK, 0 rows affected (0.57 sec)
레코드 삽입하기
다음 쿼리로 테이블에 데이터를 삽입합니다.
mysql> insert into GreatestOfTwoOrMore values(23,78,89);
Query OK, 1 row affected (0.16 sec)
mysql> insert into GreatestOfTwoOrMore values(50,100,150);
Query OK, 1 row affected (0.24 sec)
mysql> insert into GreatestOfTwoOrMore values(100,500,2000);
Query OK, 1 row affected (0.15 sec)
삽입된 데이터 확인
아래 쿼리로 방금 입력한 모든 값을 조회해 보겠습니다.
mysql> select *from GreatestOfTwoOrMore;
실행 결과는 다음과 같습니다.
+--------+--------+--------+
| Marks1 | Marks2 | Marks3 |
+--------+--------+--------+
| 23 | 78 | 89 |
| 50 | 100 | 150 |
| 100 | 500 | 2000 |
+--------+--------+--------+
3 rows in set (0.00 sec)
GREATEST()로 전체 최대값 조회하기
이제 앞서 설명한 개념을 적용하여, 두 개 이상의 필드에서 가장 큰 값을 구하는 쿼리를 실행해 보겠습니다.
mysql> SELECT GREATEST(MAX(marks1),MAX(marks2),MAX(marks3)) from GreatestOfTwoOrMore;
실행 결과는 다음과 같습니다.
+-----------------------------------------------+
| GREATEST(MAX(marks1),MAX(marks2),MAX(marks3)) |
+-----------------------------------------------+
| 2000 |
+-----------------------------------------------+
1 row in set (0.06 sec)
결과를 보면 세 개의 컬럼(Marks1, Marks2, Marks3) 전체에서 가장 큰 값인 2000이 반환된 것을 확인할 수 있습니다. 이처럼 GREATEST() 함수 안에 각 컬럼의 MAX() 값을 넣어주면, 여러 필드에 걸친 최대값을 간단하고 효율적으로 구할 수 있습니다.