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

MySQL에서 특정 필드(컬럼) 값을 서로 바꾸는 방법 완벽 정리

MySQL을 사용하다 보면 두 컬럼의 값을 서로 맞바꿔야 하는 경우가 종종 발생합니다. 예를 들어 실수로 데이터를 반대로 입력했거나, 두 필드의 값을 일괄적으로 교환해야 할 때 유용한 방법입니다. 이 글에서는 UPDATE 문과 사용자 변수(@temporaryVariable)를 활용해 특정 행의 필드 값을 간단히 교환하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Number1 int,
    Number2 int
);
Query OK, 0 rows affected (0.68 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable(Number1,Number2) values(10,30);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable(Number1,Number2) values(60,50);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Number1,Number2) values(110,100);
Query OK, 1 row affected (0.10 sec)

3. 현재 데이터 확인하기

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

mysql> select *from DemoTable;

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

+----+---------+---------+
| Id | Number1 | Number2 |
+----+---------+---------+
|  1 |      10 |      30 |
|  2 |      60 |      50 |
|  3 |     110 |     100 |
+----+---------+---------+
3 rows in set (0.00 sec)

4. UPDATE 문으로 필드 값 교환하기

이제 MySQL에서 특정 필드 값을 서로 바꿔보겠습니다. 여기서는 Id=2인 행의 "Number1"과 "Number2" 필드 값을 교환합니다.

mysql> update DemoTable
    set Number1=(@temporaryVariable:=Number1),
    Number1=Number2,
    Number2=@temporaryVariable
    where Id=2;
Query OK, 1 row affected (0.21 sec)
Rows matched: 1 Changed: 1 Warnings: 0

핵심 원리는 다음과 같습니다.

  • @temporaryVariable: 사용자 정의 변수로, 먼저 Number1의 기존 값을 임시 저장합니다.
  • Number1=Number2: Number1에 Number2의 값을 대입합니다.
  • Number2=@temporaryVariable: 임시 저장해 둔 원래 Number1의 값을 Number2에 대입합니다.

이렇게 하면 별도의 임시 테이블 없이 한 번의 UPDATE 문으로 두 필드의 값을 안전하게 교환할 수 있습니다.

5. 결과 확인하기

테이블의 레코드를 다시 한번 조회해 변경 사항을 확인합니다.

mysql> select *from DemoTable;

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

+----+---------+---------+
| Id | Number1 | Number2 |
+----+---------+---------+
|  1 |      10 |      30 |
|  2 |      50 |      60 |
|  3 |     110 |     100 |
+----+---------+---------+
3 rows in set (0.00 sec)

위 출력 결과를 보면 Id=2인 행의 Number1과 Number2 값이 각각 60→50, 50→60으로 성공적으로 교환된 것을 확인할 수 있습니다.

마무리

MySQL에서 두 필드의 값을 교환할 때는 사용자 변수를 활용한 UPDATE 문이 가장 간단하고 효율적인 방법입니다. WHERE 조건을 적절히 사용하면 특정 행만 선택적으로 교환할 수 있으며, 이 기법은 데이터 수정 작업에서 매우 자주 활용되므로 꼭 익혀두시기 바랍니다.