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

MySQL 쿼리로 열의 모든 값을 John1, John2, John3처럼 숫자 증분 형태로 업데이트하는 방법

테이블의 열에 있는 모든 값을 John1, John2, John3과 같이 순차적인 숫자가 붙은 형태로 업데이트하려면, 증분 값(1, 2, 3...)을 생성한 뒤 기존 레코드와 연결(concatenate)하면 됩니다. 이 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 만듭니다.

mysql> create table DemoTable
(
    StudentId varchar(80)
);
Query OK, 0 rows affected (0.50 sec)

2. 데이터 삽입

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다. 이 예제에서는 동일한 이름 'John'을 여러 개 삽입합니다.

mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.08 sec)

3. 현재 데이터 확인

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

mysql> select *from DemoTable;

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

+-----------+
| StudentId |
+-----------+
|       John |
|       John |
|       John |
|       John |
|       John |
+-----------+
5 rows in set (0.00 sec)

4. 숫자 증분 값을 붙여 업데이트하는 쿼리

아래 쿼리는 사용자 변수 @row를 활용해 각 행마다 1씩 증가하는 숫자를 만들고, 이를 'John' 문자열과 연결하여 업데이트합니다.

mysql> update DemoTable,(select @row := 0) r set StudentId =concat('John',@row := @row+ 1);
Query OK, 5 rows affected (0.11 sec)
Rows matched: 5 Changed: 5 Warnings: 0

쿼리 설명:

  • (select @row := 0) r — 서브쿼리를 통해 사용자 변수 @row를 0으로 초기화합니다.
  • @row := @row + 1 — 각 행이 처리될 때마다 변수 값을 1씩 증가시킵니다.
  • concat('John', ...) — 'John' 문자열 뒤에 증가된 숫자를 붙여 새로운 값을 만듭니다.

5. 업데이트 결과 확인

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

mysql> select *from DemoTable;

모든 이름에 순차적인 번호가 성공적으로 붙은 것을 볼 수 있습니다.

+-----------+
| StudentId |
+-----------+
|      John1 |
|      John2 |
|      John3 |
|      John4 |
|      John5 |
+-----------+
5 rows in set (0.00 sec)

이처럼 MySQL의 사용자 변수와 CONCAT 함수를 조합하면, 단일 UPDATE 문만으로 열 전체의 값에 고유한 순차 번호를 손쉽게 부여할 수 있습니다.