MySQL에서 하나의 행에 있는 여러 열의 값을 비교하여 그중 가장 작은 값을 찾고 싶다면 LEAST() 함수를 사용하면 됩니다. 이 함수는 인자로 전달된 여러 값 중 최소값을 반환하며, 열 이름을 그대로 인자로 넘기면 각 행별로 최소값을 손쉽게 계산할 수 있습니다.
1. 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다. 세 개의 정수형 열을 가진 테이블입니다.
mysql> create table DemoTable756 (
Value1 int,
Value2 int,
Value3 int
);
Query OK, 0 rows affected (0.62 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 테스트용 레코드를 몇 개 삽입합니다.
mysql> insert into DemoTable756 values(10,20,14);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable756 values(20,34,17);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable756 values(200,134,789);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable756 values(139,98,99);
Query OK, 1 row affected (0.17 sec)
3. 전체 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable756;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------+--------+--------+
| Value1 | Value2 | Value3 |
+--------+--------+--------+
| 10 | 20 | 14 |
| 20 | 34 | 17 |
| 200 | 134 | 789 |
| 139 | 98 | 99 |
+--------+--------+--------+
4 rows in set (0.00 sec)
4. LEAST() 함수로 최소값 구하기
여러 열의 값 중에서 최소값을 구하는 쿼리는 다음과 같습니다. LEAST() 함수 안에 비교하고 싶은 열들을 쉼표로 나열하면 됩니다.
mysql> select least(Value1,Value2,Value3) from DemoTable756;
실행 결과는 다음과 같습니다.
+-----------------------------+
| least(Value1,Value2,Value3) |
+-----------------------------+
| 10 |
| 17 |
| 134 |
| 98 |
+-----------------------------+
4 rows in set (0.00 sec)
결과 해석
각 행을 살펴보면 다음과 같이 세 열 중 가장 작은 값이 반환된 것을 확인할 수 있습니다.
- 첫 번째 행: 10, 20, 14 중 최소값 → 10
- 두 번째 행: 20, 34, 17 중 최소값 → 17
- 세 번째 행: 200, 134, 789 중 최소값 → 134
- 네 번째 행: 139, 98, 99 중 최소값 → 98
참고 사항
LEAST() 함수는 두 개 이상의 인자를 받을 수 있으며, 숫자뿐만 아니라 문자열 비교에도 사용할 수 있습니다. 다만 인자 중 하나라도 NULL이 포함되어 있으면 결과도 NULL을 반환하므로, NULL 값이 존재할 가능성이 있다면 COALESCE() 함수와 함께 사용하는 것이 좋습니다. 반대로 여러 값 중 최대값을 구할 때는 GREATEST() 함수를 사용하면 됩니다.