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

MySQL 단일 쿼리로 ID가 가장 높은 행 업데이트하는 방법

네, 가능합니다. MySQL에서는 UPDATE 문에 ORDER BYLIMIT 절을 함께 사용하면 단일 쿼리만으로 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 BYLIMIT를 조합하면 별도의 서브쿼리나 조건 없이도 원하는 행을 손쉽게 업데이트할 수 있습니다.