MySQL에서 테이블의 마지막 레코드를 선택한 후 바로 업데이트해야 하는 경우가 종종 있습니다. 이럴 때는 ORDER BY DESC와 LIMIT 절을 함께 사용하면 간단하게 해결할 수 있습니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.
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 컬럼이 없는 테이블이라면 날짜나 생성 시간처럼 정렬 기준이 될 수 있는 컬럼을 활용해야 한다는 점을 기억하세요.