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

MySQL에서 마지막 행(레코드)을 선택하는 방법

MySQL에서 테이블의 마지막 행을 조회하려면 ORDER BY 절에 DESC(내림차순) 옵션을 지정하고 LIMIT 1을 함께 사용하는 것이 가장 일반적이고 효율적인 방법입니다. 이번 글에서는 예제 테이블을 직접 만들고 데이터를 삽입한 뒤, 마지막 레코드를 가져오는 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 CREATE TABLE 문을 사용하여 테스트용 테이블을 생성합니다.

mysql> create table getLastRecord
   -> (
   -> Id int,
   -> Name varchar(100)
   -> );
Query OK, 0 rows affected (0.61 sec)

2. 샘플 데이터 삽입하기

테이블 생성이 완료되면 INSERT 명령으로 여러 개의 레코드를 추가합니다.

mysql> insert into getLastRecord values(1,'John');
Query OK, 1 row affected (0.13 sec)

mysql> insert into getLastRecord values(2,'Ramit');
Query OK, 1 row affected (0.22 sec)

mysql> insert into getLastRecord values(3,'Johnson');
Query OK, 1 row affected (0.13 sec)

mysql> insert into getLastRecord values(4,'Carol');
Query OK, 1 row affected (0.79 sec)

3. 전체 데이터 확인하기

SELECT 문을 실행해 현재 저장된 모든 레코드를 확인해 보겠습니다.

mysql> select * from getLastRecord;

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

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

현재 테이블에는 총 4개의 레코드가 있으며, 가장 마지막에 삽입된 레코드는 Id가 4이고 이름이 'Carol'인 행입니다.

4. 마지막 행만 조회하기

마지막 레코드를 가져오려면 Id를 기준으로 내림차순 정렬한 후 첫 번째 행만 선택하면 됩니다. 사용 쿼리는 다음과 같습니다.

mysql> select * from getLastRecord ORDER BY id DESC LIMIT 1;

실행 결과는 아래와 같습니다.

+------+-------+
| Id   | Name  |
+------+-------+
|    4 | Carol |
+------+-------+
1 row in set (0.00 sec)

결과를 보면 Id 4, 이름 'Carol'인 마지막 레코드가 정상적으로 조회된 것을 확인할 수 있습니다.

정리

ORDER BY 컬럼명 DESC LIMIT 1 패턴은 자동 증가(AUTO_INCREMENT) 기본 키가 있는 테이블에서 가장 최근에 추가된 레코드를 빠르게 가져올 때 매우 유용합니다. 참고로 MySQL 8.0 이상에서는 ORDER BY id DESC LIMIT 1 대신 윈도우 함수나 LAST_VALUE() 함수를 활용하는 방법도 있지만, 대부분의 경우 위 방식이 가장 간단하고 성능 면에서도 우수합니다.