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

MySQL에서 여러 UPDATE 문을 하나로 결합하는 방법 – CASE 문 활용하기

MySQL에서 여러 UPDATE 문을 하나로 결합하는 방법

여러 개의 UPDATE 문을 한 번에 실행해야 할 때는 CASE 문을 활용하면 간단하게 해결할 수 있습니다. 이 글에서는 실제 예제를 통해 여러 UPDATE 문을 하나의 쿼리로 결합하는 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성

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

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(20)
    );
Query OK, 0 rows affected (1.11 sec)

2. 레코드 삽입

INSERT 명령을 사용해 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(Name) values('Carol');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.13 sec)

3. 데이터 확인

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

mysql> select * from DemoTable;

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

+----+-------+
| Id | Name  |
+----+-------+
| 1  | John  |
| 2  | Carol |
| 3  | David |
+----+-------+
3 rows in set (0.00 sec)

4. UPDATE 문 결합하기

다음은 여러 개의 MySQL UPDATE 문을 하나로 결합한 쿼리입니다.

mysql> UPDATE DemoTable set Name= case when Name= 'John' then 'John Smith'
when Name= 'Carol' then 'Carol Taylor'
when Name= 'David' then 'David Miller'
end
where Name IN('John','Carol','David');
Query OK, 3 rows affected (0.12 sec)
Rows matched: 3 Changed: 3 Warnings: 0

5. 업데이트 결과 확인

업데이트된 레코드를 다시 조회해 보겠습니다.

mysql> select * from DemoTable;

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

+----+--------------+
| Id | Name         |
+----+--------------+
| 1  | John Smith   |
| 2  | Carol Taylor |
| 3  | David Miller |
+----+--------------+
3 rows in set (0.00 sec)

동작 원리 정리

위 쿼리는 WHERE 절로 변경 대상이 되는 행만 먼저 필터링한 뒤, CASE 문을 통해 각 행의 기존 값(Name)에 따라 서로 다른 새 값을 할당합니다. 이렇게 하면 UPDATE 문을 여러 번 실행하지 않고도 단 한 번의 쿼리로 여러 행을 각각 다른 값으로 수정할 수 있습니다. 데이터베이스와의 통신 횟수가 줄어들어 성능 면에서도 큰 이점이 있으며, 조건이 더 많아지더라도 WHEN 절만 추가하면 되므로 코드 관리도 훨씬 간편해집니다.