MySQL에서 특정 레코드의 값을 감소시키고 그 값이 0에 도달하도록 만들려면 UPDATE 문에서 SET 절로 값을 줄이고, WHERE 절로 대상 레코드를 지정하면 됩니다. 아래 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Number int
);
Query OK, 0 rows affected (0.54 sec)
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable(Number) values(10);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Number) values(20);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Number) values(1);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Number) values(0);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Number) values(-1);
Query OK, 1 row affected (0.39 sec)
3. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------+
| Id | Number |
+----+--------+
| 1 | 10 |
| 2 | 20 |
| 3 | 1 |
| 4 | 0 |
| 5 | -1 |
+----+--------+
5 rows in set (0.00 sec)
4. 값이 0이 되도록 감소시키는 UPDATE 쿼리
특정 레코드의 값을 1씩 감소시켜 0으로 만들려면 다음과 같은 쿼리를 사용합니다.
mysql> update DemoTable
set Number = Number-1
where Id = 3 AND Number > 0;
Query OK, 1 row affected (0.20 sec)
Rows matched: 1 Changed: 1 Warnings: 0
5. 업데이트 결과 확인하기
다시 한번 테이블을 조회해 보겠습니다.
mysql> select *from DemoTable;
Id가 3인 레코드의 값이 기존의 1에서 1만큼 감소하여 0이 된 것을 확인할 수 있습니다.
+----+--------+
| Id | Number |
+----+--------+
| 1 | 10 |
| 2 | 20 |
| 3 | 0 |
| 4 | 0 |
| 5 | -1 |
+----+--------+
5 rows in set (0.00 sec)
핵심 포인트: WHERE 절의 'Number > 0' 조건
이 쿼리의 핵심은 WHERE 절에 Number > 0 조건을 포함한 것입니다. 이 조건 덕분에 값이 이미 0이거나 음수인 레코드는 더 이상 감소하지 않으므로, 값이 0 미만으로 내려가는 것을 방지할 수 있습니다. 재고 수량 관리처럼 값이 음수가 되면 안 되는 상황에서 특히 유용하게 활용됩니다.