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

MySQL에서 조건을 만족하는 행의 열 값을 감소시켜 업데이트하는 방법

개요

MySQL에서는 UPDATE 문과 WHERE 절을 함께 사용하면 특정 조건을 만족하는 행만 골라서 열 값을 감소시킬 수 있습니다. 이 글에서는 예제 테이블을 만들고, 30보다 큰 Score 값에서 2를 빼는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제로 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    Score int
);
Query OK, 0 rows affected (0.65 sec)

Score라는 int 타입의 열 하나를 가진 DemoTable이 생성되었습니다.

2. 데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(29);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(56);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(24);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(32);
Query OK, 1 row affected (0.09 sec)

3. 현재 데이터 확인하기

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

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-------+
| Score |
+-------+
|    45 |
|    29 |
|    56 |
|    24 |
|    32 |
+-------+
5 rows in set (0.00 sec)

4. 조건에 따라 값을 빼서 업데이트하기

다음은 조건을 만족하는 행에서만 값을 빼서 MySQL 열을 업데이트하는 쿼리입니다. 여기서는 Score가 30보다 큰 행에 한해 2를 뺍니다.

mysql> update DemoTable set Score=Score-2 where Score > 30;
Query OK, 3 rows affected (0.14 sec)
Rows matched: 3 Changed: 3 Warnings: 0

WHERE 절에 Score > 30이라는 조건을 지정했기 때문에, 45, 56, 32 세 개의 행만 업데이트되었습니다. 나머지 29와 24는 조건에 해당하지 않아 그대로 유지됩니다.

5. 업데이트 결과 확인하기

테이블의 레코드를 다시 한번 조회해 결과를 확인합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-------+
| Score |
+-------+
|    43 |
|    29 |
|    54 |
|    24 |
|    30 |
+-------+
5 rows in set (0.00 sec)

결론

UPDATE 문에서 SET 열이름 = 열이름 - 값 형태로 작성하면 기존 값에서 원하는 만큼 값을 뺄 수 있으며, WHERE 절을 활용하면 조건을 만족하는 행만 선택적으로 업데이트할 수 있습니다. 이 방식은 재고 수량 차감, 포인트 차감 등 실무에서 매우 자주 사용되는 패턴이므로 꼭 익혀두시기 바랍니다.