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 절을 함께 사용하면 대상 행을 더욱 정확하게 제한할 수 있습니다.