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

MySQL에서 UPDATE, SET, LIMIT를 활용해 일부 행만 동일한 값으로 업데이트하는 방법

MySQL에서 UPDATE 문과 SET, LIMIT 절을 함께 사용하면 테이블의 모든 행이 아닌 원하는 개수의 행만 동일한 값으로 업데이트할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 데모용 테이블을 생성합니다.

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

2. 데이터 삽입하기

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

mysql> insert into DemoTable(Name) values('Carol');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable(Name) values('Bob');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Name) values('Mike');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(Name) values('Adam');
Query OK, 1 row affected (0.18 sec)

3. 데이터 확인하기

SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

출력 결과

+----+--------+
| Id | Name |
+----+--------+
| 1 | Carol |
| 2 | Chris |
| 3 | David |
| 4 | Bob |
| 5 | Mike |
| 6 | Sam |
| 7 | Robert |
| 8 | Adam |
+----+--------+
8 rows in set (0.00 sec)

4. LIMIT로 일부 행만 업데이트하기

다음은 마지막 행 하나를 제외한 나머지 7개 행의 Name 값을 'John'으로 동일하게 설정하는 쿼리입니다.

mysql> update DemoTable
-> set Name="John"
-> limit 7;
Query OK, 7 rows affected (0.20 sec)
Rows matched: 7 Changed: 7 Warnings: 0

업데이트가 완료되었으니 테이블을 다시 조회해 결과를 확인해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+----+------+
| Id | Name |
+----+------+
| 1 | John |
| 2 | John |
| 3 | John |
| 4 | John |
| 5 | John |
| 6 | John |
| 7 | John |
| 8 | Adam |
+----+------+
8 rows in set (0.00 sec)

실행 결과를 보면 Id 1번부터 7번까지의 Name 값이 모두 'John'으로 변경되었고, 마지막 8번 행('Adam')만 원래 값이 그대로 유지된 것을 확인할 수 있습니다.

이처럼 UPDATE 문 끝에 LIMIT 숫자를 붙이면 해당 개수만큼의 행만 수정됩니다. 참고로 LIMIT 사용 시 어떤 행이 먼저 업데이트될지는 순서가 보장되지 않으므로, 특정 기준으로 업데이트하고 싶다면 단일 테이블 UPDATE 문에서 ORDER BY 절을 함께 사용하는 것이 좋습니다.