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

MySQL에서 조건에 따라 테이블의 모든 행에 두 가지 값만 설정하는 방법

MySQL에서 특정 조건에 따라 테이블의 값을 업데이트하려면 UPDATE 문과 IF() 함수를 함께 사용하면 됩니다. 이 방법을 활용하면 하나의 쿼리만으로 두 개의 값을 서로 맞바꾸거나 조건에 따라 다른 값으로 일괄 변경할 수 있습니다.

예제 테이블 생성하기

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

mysql> create table DemoTable
(
    Value int
);
Query OK, 0 rows affected (0.47 sec)

샘플 데이터 삽입하기

insert 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(30);
Query OK, 1 row affected (0.10 sec)

테이블 데이터 확인하기

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

mysql> select *from DemoTable;

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

+-------+
| Value |
+-------+
|    10 |
|    20 |
|    10 |
|    20 |
|    30 |
+-------+
5 rows in set (0.00 sec)

조건에 따라 값 업데이트하기

다음은 IF() 함수를 활용해 조건에 따라 값을 업데이트하는 쿼리입니다. Value가 10이면 20으로, 그렇지 않으면 10으로 변경됩니다.

mysql> update DemoTable set Value=if(Value=10,20,10);
Query OK, 5 rows affected (0.20 sec)
Rows matched: 5 Changed: 5 Warnings: 0

업데이트 결과 확인하기

테이블 레코드를 다시 한번 조회해 결과를 확인합니다.

mysql> select *from DemoTable;

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

+-------+
| Value |
+-------+
|    20 |
|    10 |
|    20 |
|    10 |
|    10 |
+-------+
5 rows in set (0.00 sec)

실행 결과를 보면 원래 값이 10이었던 행은 20으로, 20이었던 행은 10으로 바뀌었습니다. 주목할 점은 값이 30이었던 마지막 행 역시 ELSE 분기에 해당하여 10으로 변경되었다는 것입니다. 이처럼 IF(조건, 참일 때 값, 거짓일 때 값) 구문을 사용하면 복잡한 CASE 문 없이도 간단한 조건부 업데이트를 손쉽게 처리할 수 있습니다.