MySQL 테이블에서 가장 큰 ID 값을 가진 행을 조회하려면 ORDER BY DESC 절과 LIMIT 1을 함께 사용하면 됩니다. ID를 내림차순으로 정렬한 뒤 첫 번째 행 하나만 가져오는 방식으로, 결과적으로 최대 ID를 가진 행이 반환됩니다.
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
(
Id int,
FirstName varchar(50)
);
Query OK, 0 rows affected (0.83 sec)데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(100,'Chris'); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values(110,'Robert'); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable values(120,'Mike'); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable values(115,'Bob'); Query OK, 1 row affected (0.14 sec)
전체 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Chris | | 110 | Robert | | 120 | Mike | | 115 | Bob | +------+-----------+ 4 rows in set (0.00 sec)
가장 높은 ID를 가진 행 조회하기
아래 쿼리처럼 ORDER BY Id DESC LIMIT 1을 사용하면 가장 큰 ID를 가진 행만 출력됩니다.
mysql> select *from DemoTable order by Id DESC LIMIT 1;
실행 결과는 다음과 같습니다.
+------+-----------+ | Id | FirstName | +------+-----------+ | 120 | Mike | +------+-----------+ 1 row in set (0.00 sec)
참고: MAX() 함수를 활용한 대안
동일한 결과를 얻는 또 다른 방법으로 MAX() 함수를 사용할 수 있습니다. 서브쿼리로 최대 ID를 구한 뒤 해당 행을 조회하는 방식입니다.
mysql> select *from DemoTable where Id = (select max(Id) from DemoTable);
두 방식 모두 ID가 120인 'Mike' 행을 반환합니다. 단순히 최대 ID 한 건만 필요하다면 ORDER BY DESC + LIMIT 1이 간결하고, 인덱스가 설정되어 있다면 매우 빠르게 동작합니다.