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

MySQL에서 CASE 문으로 조건에 따라 테이블의 행 값 바꾸는 방법

MySQL CASE 문을 활용한 조건부 행 값 변경

MySQL에서 특정 조건에 따라 테이블의 행 값을 교체하려면 CASE 문을 사용하면 됩니다. UPDATE 문과 CASE 문을 함께 활용하면 여러 개의 행을 한 번의 쿼리로 각각 다른 값으로 변경할 수 있습니다.

아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성하기

먼저 테이블을 생성합니다.

mysql> create table DemoTable1481
    -> (
    -> PlayerScore int
    -> );
Query OK, 0 rows affected (0.42 sec)

2단계: 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1481 values(454);
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable1481 values(765);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1481 values(890);
Query OK, 1 row affected (0.09 sec)

3단계: 저장된 데이터 확인하기

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

mysql> select * from DemoTable1481;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-------------+
| PlayerScore |
+-------------+
|         454 |
|         765 |
|         890 |
+-------------+
3 rows in set (0.00 sec)

4단계: CASE 문으로 조건부 업데이트 실행하기

다음은 MySQL 테이블에서 조건에 따라 행 값을 교체하는 쿼리입니다. 각 점수 값에 대해 WHEN 절로 조건을 지정하고, THEN 절로 새로운 값을 정의합니다.

mysql> update DemoTable1481
    -> set PlayerScore= case when PlayerScore=454 then 1256
    -> when PlayerScore=765 then 1865
    -> when PlayerScore=890 then 3990
    -> end
    -> ;
Query OK, 3 rows affected (0.17 sec)
Rows matched: 3  Changed: 3 Warnings: 0

5단계: 변경 결과 확인하기

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

mysql> select * from DemoTable1481;

모든 행이 조건에 맞게 새로운 값으로 교체된 것을 확인할 수 있습니다.

+-------------+
| PlayerScore |
+-------------+
|        1256 |
|        1865 |
|        3990 |
+-------------+
3 rows in set (0.00 sec)

마무리

이처럼 UPDATE 문 안에서 CASE 문을 사용하면 복잡한 조건 로직도 하나의 쿼리로 처리할 수 있습니다. 참고로 WHEN 절에 해당하지 않는 행은 NULL로 설정될 수 있으므로, 모든 경우를 커버하거나 ELSE 절을 추가하는 것이 안전합니다. WHERE 절을 함께 사용하면 대상 행을 더욱 정확하게 제한할 수 있습니다.