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

MySQL에서 처음 3개 행의 값만 특정 값으로 변경하는 방법 (LIMIT 활용)

MySQL에서 테이블의 처음 3개 행에만 특정 값을 설정하고 싶다면, UPDATE 문에서 LIMIT 3을 사용하면 됩니다. ORDER BY 절과 함께 사용하면 어떤 순서로 행을 선택해 수정할지도 지정할 수 있어 매우 유용합니다.

1. 테이블 생성하기

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

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

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable1968(Name) values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1968(Name) values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1968(Name) values('Sam');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1968(Name) values('Mike');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1968(Name) values('Carol');
Query OK, 1 row affected (0.00 sec)

3. 전체 데이터 확인하기

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

mysql> select * from DemoTable1968;

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

+----+-------+
| Id | Name  |
+----+-------+
|  1 | Chris |
|  2 | David |
|  3 | Sam   |
|  4 | Mike  |
|  5 | Carol |
+----+-------+
5 rows in set (0.00 sec)

4. 처음 3개 행만 업데이트하기

아래 쿼리는 ORDER BY Id로 Id 순서대로 정렬한 뒤, LIMIT 3을 통해 앞의 3개 행만 골라 Name 값을 'Robert'로 변경합니다.

mysql> update DemoTable1968
    set Name='Robert'
    order by Id
    limit 3;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3 Warnings: 0

참고: MySQL에서는 UPDATE 문에 ORDER BY와 LIMIT를 함께 사용할 수 있지만, SQL Server나 PostgreSQL 등 다른 DBMS에서는 이 구문이 지원되지 않으므로 서브쿼리 등 다른 방식으로 처리해야 합니다.

5. 변경 결과 확인하기

테이블을 다시 조회해보면 처음 3개 행만 'Robert'로 변경된 것을 확인할 수 있습니다.

mysql> select * from DemoTable1968;

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

+----+--------+
| Id | Name   |
+----+--------+
|  1 | Robert |
|  2 | Robert |
|  3 | Robert |
|  4 | Mike   |
|  5 | Carol  |
+----+--------+
5 rows in set (0.00 sec)

정리

MySQL에서 특정 개수의 행만 업데이트하려면 다음 두 가지를 기억하면 됩니다.

  • LIMIT n: 영향을 받을 최대 행 수를 제한합니다.
  • ORDER BY: 어떤 행부터 우선 적용할지 순서를 결정합니다. 생략하면 의도하지 않은 행이 수정될 수 있으므로 명시하는 것이 안전합니다.