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

MySQL에서 두 테이블 열의 최댓값(MAX) 구하기 – GREATEST() 함수 활용법

두 개의 서로 다른 MySQL 테이블에서 각각 열의 최댓값(MAX)을 구한 뒤, 그중 더 큰 값을 한 번에 얻으려면 GREATEST() 함수를 사용하면 됩니다. GREATEST()는 인자로 전달된 여러 값 중 가장 큰 값을 반환하는 함수로, 서브쿼리 결과와 함께 사용하면 두 테이블의 최댓값을 손쉽게 비교할 수 있습니다.

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

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

insert 명령을 사용해 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable1 values(80);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable1 values(229);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1 values(575);
Query OK, 1 row affected (0.24 sec)

select 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable1;

출력 결과

+--------+
| Number |
+--------+
| 80     |
| 229    |
| 575    |
+--------+
3 rows in set (0.00 sec)

이어서 두 번째 테이블을 생성합니다.

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

마찬가지로 insert 명령으로 레코드를 삽입합니다.

mysql> insert into DemoTable2 values(485);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable2 values(10);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable2 values(475);
Query OK, 1 row affected (0.12 sec)

select 문으로 두 번째 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable2;

출력 결과

+--------+
| Number |
+--------+
| 485    |
| 10     |
| 475    |
+--------+
3 rows in set (0.00 sec)

이제 두 테이블의 열에서 각각 최댓값을 구하고, 그중 더 큰 값을 반환하는 쿼리입니다. 각 테이블의 max(Number)를 서브쿼리로 구한 뒤 GREATEST()로 비교합니다.

mysql> select greatest((select max(Number) from DemoTable1),(select max(Number) from DemoTable2));

출력 결과

+-----------------------------------------------------------------------------------------+
| greatest((select max(Number) from DemoTable1),(select max(Number) from DemoTable2))     |
+-----------------------------------------------------------------------------------------+
| 575                                                                                     |
+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

결과를 보면 DemoTable1의 최댓값은 575, DemoTable2의 최댓값은 485입니다. GREATEST() 함수가 두 값을 비교하여 전체 최댓값인 575를 반환한 것을 확인할 수 있습니다. 이처럼 GREATEST()와 서브쿼리를 조합하면 여러 테이블에 흩어진 값 중 가장 큰 값을 간단하게 조회할 수 있습니다.