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

MySQL UPDATE 시 특정 값 이상으로 증가하지 않도록 제한하는 방법 (LEAST 함수 활용)

MySQL에서 데이터를 업데이트할 때 특정 값 이상으로 값이 증가하지 않도록 제한해야 하는 경우가 있습니다. 예를 들어 어떤 컬럼의 값이 최대 200까지만 가질 수 있도록 하고 싶다면 LEAST() 함수를 활용하면 간단하게 해결할 수 있습니다.

1. 테이블 생성

먼저 테스트에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Value int
-> );
Query OK, 0 rows affected (0.54 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable values(150);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(180);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(200);
Query OK, 1 row affected (0.14 sec)

3. 현재 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

출력 결과

+-------+
| Value |
+-------+
| 100 |
| 150 |
| 180 |
| 200 |
+-------+
4 rows in set (0.00 sec)

4. 최대값 제한이 적용된 UPDATE 쿼리 실행

다음은 값을 45씩 증가시키되, 200을 넘지 않도록 제한하는 UPDATE 쿼리입니다. 핵심은 LEAST() 함수로, 전달된 값 중 작은 값을 반환하기 때문에 증가한 값이 200을 초과하더라도 항상 200으로 고정됩니다.

mysql> set @value:=45;
Query OK, 0 rows affected (0.00 sec)

mysql> update DemoTable
-> set Value = LEAST(value + @value, 200) ;
Query OK, 3 rows affected (0.21 sec)
Rows matched: 4 Changed: 3 Warnings: 0

5. 업데이트 후 결과 확인

테이블의 레코드를 다시 한번 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

아래 결과에서 볼 수 있듯이 어떤 값도 200을 초과하지 않습니다. 원래 180이었던 값은 45를 더하면 225가 되어야 하지만 200으로 제한되었고, 이미 200이었던 값 역시 그대로 유지됩니다.

+-------+
| Value |
+-------+
| 145 |
| 195 |
| 200 |
| 200 |
+-------+
4 rows in set (0.00 sec)

핵심 정리

LEAST(증가된 값, 최대 허용값) 패턴을 사용하면 UPDATE 시 특정 상한선을 넘지 않도록 손쉽게 제한할 수 있습니다. 반대로 값이 최소값 이하로 내려가지 않게 하려면 GREATEST() 함수를 사용하면 됩니다.