두 개의 열을 동시에 비교하여 그중 가장 큰 값을 가진 행 하나만 조회하려면 ORDER BY 절과 LIMIT을 함께 사용하면 됩니다. 두 열을 모두 내림차순(DESC)으로 정렬한 뒤 첫 번째 행만 가져오는 방식입니다.
먼저 예제 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> Num1 int,
-> Num2 int
-> );
Query OK, 0 rows affected (0.61 sec)
샘플 데이터 삽입
INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable values(60,249);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(59,250);
Query OK, 1 row affected (0.12 sec)
전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+------+------+ | Num1 | Num2 | +------+------+ | 60 | 249 | | 59 | 250 | +------+------+ 2 rows in set (0.00 sec)
두 개의 열을 비교하여 하나의 행 조회하기
이제 두 열의 최댓값을 기준으로 행 하나를 가져오는 쿼리를 살펴보겠습니다. Num2를 우선 기준으로 내림차순 정렬하고, 값이 같을 경우를 대비해 Num1도 내림차순으로 정렬한 후 LIMIT 1로 첫 번째 행만 선택합니다.
mysql> select *from DemoTable
-> order by Num2 DESC,Num1 DESC limit 1;
실행 결과는 다음과 같습니다.
+------+------+ | Num1 | Num2 | +------+------+ | 59 | 250 | +------+------+ 1 row in set (0.00 sec)
결과를 보면 Num2 값이 더 큰 250을 가진 행이 반환된 것을 확인할 수 있습니다. 이처럼 ORDER BY 절에 여러 열을 지정하고 LIMIT 1을 사용하면, 단일 MySQL 쿼리만으로 여러 열을 비교하여 원하는 한 개의 행을 손쉽게 얻을 수 있습니다.