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

MySQL에서 CASE 문으로 조건에 따라 특정 열 값을 업데이트하는 방법

조건에 따라 열의 값을 서로 바꾸거나 변경해야 할 때는 UPDATE 명령과 CASE 문을 함께 사용하면 됩니다. 이 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성

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

mysql> create table DemoTable1925
    (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(20),
    StudentMarks int
    );
Query OK, 0 rows affected (0.00 sec)

StudentId는 자동 증가(AUTO_INCREMENT) 기본 키로 설정되어 있고, 학생 이름(StudentName)과 점수(StudentMarks) 열이 포함되어 있습니다.

2. 데이터 삽입

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

mysql> insert into DemoTable1925(StudentName,StudentMarks) values('Chris',98);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1925(StudentName,StudentMarks) values('David',45);
Query OK, 1 row affected (0.00 sec)

3. 현재 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1925;

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

+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
|         1 | Chris       |           98 |
|         2 | David       |           45 |
+-----------+-------------+--------------+
2 rows in set (0.00 sec)

4. CASE 문으로 값 업데이트

이제 CASE 문을 활용해 특정 열의 값을 업데이트하는 쿼리를 실행합니다. 아래 예제에서는 점수가 45점인 학생은 98점으로, 98점인 학생은 0점으로 변경됩니다.

mysql> update DemoTable1925
    set StudentMarks=case StudentMarks when 45 then 98
    when 98 then 0 end
    where StudentMarks IN(45,98);
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2 Warnings: 0

여기서 핵심은 WHERE 절에 IN(45,98) 조건을 넣어 해당하는 행만 업데이트 대상으로 한정한다는 점입니다. 만약 WHERE 절을 생략하면 CASE 문에 정의되지 않은 값들은 NULL로 변경되므로 주의해야 합니다.

5. 업데이트 결과 확인

변경된 내용을 확인하기 위해 테이블 레코드를 다시 조회해 보겠습니다.

mysql> select * from DemoTable1925;

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

+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
|         1 | Chris       |            0 |
|         2 | David       |           98 |
+-----------+-------------+--------------+
2 rows in set (0.00 sec)

출력 결과를 보면 Chris의 점수는 98에서 0으로, David의 점수는 45에서 98로 성공적으로 변경된 것을 확인할 수 있습니다. 이처럼 UPDATE와 CASE 문을 조합하면 하나의 쿼리만으로 여러 조건별 값을 한 번에 처리할 수 있습니다.