네, 가능합니다. MySQL에서는 UPDATE 문에 ORDER BY와 LIMIT 절을 함께 사용하면 단일 쿼리만으로 ID가 가장 높은(가장 최근의) 행을 업데이트할 수 있습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable ( ID int, GameScore int ); Query OK, 0 rows affected (0.55 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(15,848747); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(13,909049); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(34,98474646); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(31,948474); Query OK, 1 row affected (0.27 sec)
3. 전체 데이터 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+------+-----------+ | ID | GameScore | +------+-----------+ | 15 | 848747 | | 13 | 909049 | | 34 | 98474646 | | 31 | 948474 | +------+-----------+ 4 rows in set (0.00 sec)
4. ID가 가장 높은 행을 단일 쿼리로 업데이트하기
핵심은 ORDER BY ID DESC로 내림차순 정렬한 뒤 LIMIT 1을 적용하여 가장 큰 ID를 가진 행 하나만 대상으로 하는 것입니다. 아래 쿼리는 ID가 가장 높은 행의 GameScore를 10 증가시킵니다.
mysql> update DemoTable set GameScore=GameScore+10 ORDER BY ID DESC LIMIT 1; Query OK, 1 row affected (0.19 sec) Rows matched : 1 Changed : 1 Warnings : 0
참고: 이 방식은 서브쿼리 없이 하나의 UPDATE 문에서 처리되므로 간결하고 효율적입니다. 다만 ORDER BY ... LIMIT를 UPDATE와 함께 사용할 수 있는지는 데이터베이스마다 다르며, 위 방법은 MySQL에서 지원됩니다.
5. 업데이트 결과 확인하기
테이블을 다시 조회하면 ID가 34인 행의 GameScore만 10이 증가한 것을 확인할 수 있습니다.
mysql> select *from DemoTable;
출력 결과
+------+-----------+ | ID | GameScore | +------+-----------+ | 15 | 848747 | | 13 | 909049 | | 34 | 98474656 | | 31 | 948474 | +------+-----------+ 4 rows in set (0.00 sec)
위 출력에서 볼 수 있듯이, 가장 높은 ID(34)를 가진 행의 GameScore가 98474646에서 98474656으로 변경되었습니다. 이처럼 ORDER BY와 LIMIT를 조합하면 별도의 서브쿼리나 조건 없이도 원하는 행을 손쉽게 업데이트할 수 있습니다.