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

MySQL에서 마지막 레코드를 선택하고 업데이트하는 방법

MySQL에서 테이블의 마지막 레코드를 선택한 후 바로 업데이트해야 하는 경우가 종종 있습니다. 이럴 때는 ORDER BY DESCLIMIT 절을 함께 사용하면 간단하게 해결할 수 있습니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

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

Id 컬럼은 자동 증가(AUTO_INCREMENT) 기본키로 설정되어, 레코드가 삽입될 때마다 순차적으로 번호가 부여됩니다.

2. 샘플 데이터 삽입하기

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

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

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

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

3. 현재 데이터 확인하기

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

mysql> select *from DemoTable;

출력 결과

+----+-------+
| Id | Name |
+----+-------+
| 1 | John |
| 2 | Sam |
| 3 | Carol |
+----+-------+
3 rows in set (0.00 sec)

현재 총 3개의 레코드가 저장되어 있으며, 가장 마지막 레코드는 Id가 3인 'Carol'입니다.

4. 마지막 레코드 선택 후 업데이트하기

다음은 마지막 레코드를 선택하여 업데이트하는 핵심 쿼리입니다. ORDER BY Id DESC로 내림차순 정렬한 뒤 LIMIT 1을 적용하면, Id 값이 가장 큰 마지막 레코드 하나만 대상이 됩니다.

mysql> update DemoTable
-> set Name='Robert'
-> order by Id DESC limit 1;
Query OK, 1 row affected (0.18 sec)
Rows matched: 1 Changed: 1 Warnings: 0

실행 결과를 보면 정확히 1개의 행만 변경된 것을 확인할 수 있습니다.

5. 업데이트 결과 확인하기

테이블을 다시 조회하여 마지막 레코드가 성공적으로 수정되었는지 확인해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+----+--------+
| Id | Name |
+----+--------+
| 1 | John |
| 2 | Sam |
| 3 | Robert |
+----+--------+
3 rows in set (0.00 sec)

위 출력 결과에서 볼 수 있듯이, 마지막 레코드(Id 3)의 이름이 'Carol'에서 'Robert'로 성공적으로 변경되었습니다.

정리

MySQL에서 마지막 레코드를 업데이트할 때 핵심은 UPDATE 문 안에서 ORDER BY 컬럼명 DESC LIMIT 1을 함께 사용하는 것입니다. 이 방식은 별도의 서브쿼리 없이 단일 쿼리로 처리할 수 있어 간결하고 효율적입니다. 다만, AUTO_INCREMENT 컬럼이 없는 테이블이라면 날짜나 생성 시간처럼 정렬 기준이 될 수 있는 컬럼을 활용해야 한다는 점을 기억하세요.