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

MySQL에서 LIMIT 없이 마지막 레코드 조회하는 방법

MySQL에서 LIMIT 절을 사용하지 않고 테이블의 마지막 항목(레코드)을 조회해야 하는 경우가 있습니다. 이럴 때는 서브쿼리(subquery)MAX() 함수를 활용하면 간단하게 해결할 수 있습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.54 sec)

Id 컬럼은 AUTO_INCREMENT로 설정되어 있어 레코드가 삽입될 때마다 자동으로 증가합니다.

2. 레코드 삽입하기

INSERT 명령을 사용하여 테이블에 샘플 데이터를 추가합니다.

mysql> insert into DemoTable(Name) values('John Smith');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable(Name) values('David Miller');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Name) values('Chris Brown');
Query OK, 1 row affected (0.22 sec)

3. 전체 레코드 확인하기

SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

출력 결과

+----+--------------+
| Id | Name         |
+----+--------------+
| 1  | John Smith   |
| 2  | David Miller |
| 3  | Chris Brown  |
+----+--------------+
3 rows in set (0.00 sec)

4. LIMIT 없이 마지막 항목 조회하기

다음은 서브쿼리를 사용하여 MySQL에서 LIMIT 없이 마지막 항목을 가져오는 쿼리입니다.

mysql> select *from DemoTable
    -> where Id=(select max(Id) from DemoTable);

출력 결과

+----+-------------+
| Id | Name        |
+----+-------------+
| 3  | Chris Brown |
+----+-------------+
1 row in set (0.00 sec)

동작 원리

이 쿼리의 핵심은 서브쿼리 (select max(Id) from DemoTable)입니다. 서브쿼리가 테이블에서 가장 큰 Id 값을 반환하면, 외부 쿼리는 그 값과 일치하는 행만 조회합니다. IdAUTO_INCREMENT로 설정되어 있기 때문에 가장 큰 Id 값은 곧 가장 최근에 삽입된 레코드, 즉 마지막 항목을 의미합니다.

이 방식은 특정 조건에 따라 정렬된 결과 중 마지막 값을 구하거나, LIMIT 문법을 사용하기 어려운 환경에서도 유용하게 활용할 수 있습니다.