네, 가능합니다. MySQL에서는 LEAST() 함수를 사용하면 여러 컬럼(필드) 값 중 가장 작은 값을 손쉽게 조회할 수 있습니다.
SELECT LEAST(yourColumnName1, yourColumnName2, ...N) FROM yourTableName;
LEAST() 함수는 인자로 전달된 두 개 이상의 값을 비교하여 그중 최소값을 반환합니다. 숫자뿐만 아니라 날짜(DATE) 타입에도 적용할 수 있어 활용 범위가 넓습니다.
1. 테이블 생성
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable
-> (
-> Date1 date,
-> Date2 date,
-> Date3 date
-> );
Query OK, 0 rows affected (0.54 sec)
2. 데이터 삽입
INSERT 명령을 사용하여 테이블에 샘플 레코드를 추가합니다.
mysql> INSERT INTO DemoTable VALUES('2019-03-31', '2019-01-01', '2019-03-05');
Query OK, 1 row affected (0.17 sec)3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> SELECT *FROM DemoTable;
출력 결과
+------------+------------+------------+
| Date1 | Date2 | Date3 |
+------------+------------+------------+
| 2019-03-31 | 2019-01-01 | 2019-03-05 |
+------------+------------+------------+
1 row in set (0.00 sec)
4. LEAST() 함수로 최소값 조회하기
다음은 세 개의 날짜 컬럼 중 최소값을 구하는 쿼리입니다.
mysql> SELECT LEAST(Date1, Date2, Date3) FROM DemoTable;
출력 결과
+----------------------------+
| least(Date1,Date2,Date3) |
+----------------------------+
| 2019-01-01 |
+----------------------------+
1 row in set (0.04 sec)
실행 결과를 보면 세 개의 날짜 중 가장 빠른 날짜인 '2019-01-01'이 반환된 것을 확인할 수 있습니다.
참고 사항
LEAST() 함수를 사용할 때는 몇 가지 주의할 점이 있습니다.
NULL 처리: 인자 중 하나라도 NULL이 포함되어 있으면 LEAST() 함수는 NULL을 반환합니다. NULL이 있을 수 있는 컬럼이라면 IFNULL() 함수를 함께 사용하는 것이 좋습니다.
SELECT LEAST(IFNULL(Date1, '9999-12-31'), IFNULL(Date2, '9999-12-31'), IFNULL(Date3, '9999-12-31')) FROM DemoTable;
GREATEST() 함수: 반대로 여러 값 중 최대값을 구하고 싶다면 GREATEST() 함수를 사용하면 됩니다. 사용법은 LEAST()와 동일합니다.