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

MySQL에서 조건에 따라 다른 필드를 업데이트하는 방법 – IF() 함수 활용 예제

MySQL에서는 UPDATE 문과 IF() 함수를 조합하면 조건에 따라 특정 필드의 값을 선택적으로 변경할 수 있습니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 조건부 업데이트까지 전 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

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

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable1436(Name) values('Chris');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1436(Name) values('David');
Query OK, 1 row affected (0.40 sec)
mysql> insert into DemoTable1436(Name) values('Bob');
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable1436(Name) values('David');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable1436(Name) values('David');
Query OK, 1 row affected (0.31 sec)

3. 현재 데이터 확인하기

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

mysql> select * from DemoTable1436;

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

+----+-------+
| Id | Name  |
+----+-------+
|  1 | Chris |
|  2 | David |
|  3 | Bob   |
|  4 | David |
|  5 | David |
+----+-------+
5 rows in set (0.00 sec)

4. 조건에 따라 필드 업데이트하기

이제 핵심인 조건부 업데이트 쿼리입니다. 아래 쿼리는 Id가 2인 행에서, 기존 값이 'David'일 경우에만 'Carol Taylor'로 변경합니다.

mysql> update DemoTable1436
    -> set Name=IF(Name='David','Carol Taylor',Name)
    -> where Id=2;
Query OK, 1 row affected (0.31 sec)
Rows matched: 1  Changed: 1 Warnings: 0

쿼리 설명:

  • IF(조건, 참일 때 값, 거짓일 때 값) – 조건이 참이면 두 번째 인자를, 거짓이면 세 번째 인자를 반환합니다.
  • Name='David' – 이름이 'David'인 경우에만 새 값('Carol Taylor')을 적용하고, 그렇지 않으면 기존 값(Name)을 그대로 유지합니다.
  • WHERE Id=2 – 업데이트 대상을 Id가 2인 행으로 한정하여, 다른 'David' 레코드(Id 4, 5)는 영향을 받지 않습니다.

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

테이블을 다시 조회해 변경 사항을 확인합니다.

mysql> select * from DemoTable1436;

결과를 보면 Id가 2인 행만 'Carol Taylor'로 변경되고, 나머지 'David' 레코드는 그대로 유지된 것을 알 수 있습니다.

+----+--------------+
| Id | Name         |
+----+--------------+
|  1 | Chris        |
|  2 | Carol Taylor |
|  3 | Bob          |
|  4 | David        |
|  5 | David        |
+----+--------------+
5 rows in set (0.00 sec)

마무리

이처럼 MySQL에서는 UPDATE 문 안에 IF() 함수를 사용하면 WHERE 절과 함께 조건에 따라 필드 값을 유연하게 제어할 수 있습니다. 더 복잡한 분기 처리가 필요하다면 CASE WHEN 표현식을 활용하는 것도 좋은 방법입니다.