MySQL에서 특정 컬럼의 숫자 값이 지정한 최대값을 초과하지 않도록 제한하고 싶다면 LEAST() 함수를 사용하면 됩니다. LEAST()는 전달된 여러 값 중 가장 작은 값을 반환하기 때문에, 컬럼 값과 원하는 최대값을 함께 넘기면 자동으로 상한선이 적용됩니다.
LEAST() 기본 문법
select least(yourColumnName, yourMaxValue) from yourTableName;
이제 실제 예제를 통해 동작 방식을 살펴보겠습니다.
1. 테이블 생성
먼저 테스트용 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Number int
-> );
Query OK, 0 rows affected (0.64 sec)2. 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(50); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(40); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(30); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(201); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(60); Query OK, 1 row affected (0.17 sec)
3. 전체 데이터 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+--------+ | Number | +--------+ | 50 | | 40 | | 30 | | 201 | | 60 | +--------+ 5 rows in set (0.00 sec)
4. LEAST()로 최대값 제한 적용
아래 쿼리는 모든 숫자를 최대값 40으로 제한합니다. 40보다 큰 값(50, 201, 60)은 모두 40으로 반환되고, 40 이하인 값(30)은 원래 값 그대로 유지됩니다.
mysql> select least(Number,40) from DemoTable;
출력 결과
+------------------+ | least(Number,40) | +------------------+ | 40 | | 40 | | 30 | | 40 | | 40 | +------------------+ 5 rows in set (0.02 sec)
참고: GREATEST()로 최소값 제한하기
반대로 숫자가 특정 최소값 미만으로 내려가지 않도록 하려면 GREATEST() 함수를 사용하면 됩니다. 예를 들어 select greatest(Number, 10) from DemoTable;처럼 작성하면 10보다 작은 값은 모두 10으로 반환됩니다.
이처럼 LEAST()와 GREATEST()를 활용하면 별도의 조건문 없이 간단하게 숫자 값의 상한과 하한을 손쉽게 제어할 수 있습니다.