MySQL에서 테이블에 저장된 레코드 중 가장 최신(가장 큰) ID를 가진 행만 조회하고 싶다면, ORDER BY ... DESC와 LIMIT 1을 조합하면 간단하게 해결할 수 있습니다. 아래에서 예제 테이블 생성부터 결과 확인까지 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 자동 증가(AUTO_INCREMENT) 기본키를 가진 테이블을 생성합니다.
mysql> create table DemoTable676(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Number int
);
Query OK, 0 rows affected (0.50 sec)
2. 샘플 데이터 삽입하기
INSERT 문을 사용해 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable676(Number) values(1000);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable676(Number) values(1839);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable676(Number) values(29894);
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable676(Number) values(1264);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable676(Number) values(190);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable676(Number) values(167);
Query OK, 1 row affected (0.11 sec)
3. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 데이터를 조회해 보겠습니다.
mysql> select *from DemoTable676;
실행 결과는 다음과 같습니다.
+----+--------+
| Id | Number |
+----+--------+
| 1 | 1000 |
| 2 | 1839 |
| 3 | 29894 |
| 4 | 1264 |
| 5 | 190 |
| 6 | 167 |
+----+--------+
6 rows in set (0.00 sec)
4. 최신 ID를 가진 레코드만 조회하기
ID를 내림차순(DESC)으로 정렬한 뒤 첫 번째 행만 가져오면, 가장 최근에 삽입된 레코드, 즉 최신 ID를 가진 레코드를 얻을 수 있습니다.
mysql> select *from DemoTable676 order by Id DESC LIMIT 1;
실행 결과는 다음과 같습니다.
+----+--------+
| Id | Number |
+----+--------+
| 6 | 167 |
+----+--------+
1 row in set (0.00 sec)
핵심 정리
ORDER BY Id DESC LIMIT 1 쿼리는 ID 기준 내림차순 정렬 후 상위 1개 행만 반환하기 때문에, AUTO_INCREMENT 컬럼이 있는 테이블에서 마지막에 삽입된 레코드를 빠르고 간편하게 조회할 수 있습니다. 대용량 테이블에서도 인덱스가 설정된 기본키 컬럼을 기준으로 정렬하므로 성능 면에서도 효율적입니다.