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

MySQL에서 마지막 30개 행 조회하는 방법 – ORDER BY DESC와 LIMIT 활용하기

MySQL에서 테이블의 마지막 30개 행을 가져오려면 ORDER BY ... DESC로 내림차순 정렬한 뒤 LIMIT 30을 사용하면 됩니다. 기본 문법은 다음과 같습니다.

SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 30;

1. 예제 테이블 생성

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> CREATE TABLE DemoTable1567
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );
Query OK, 0 rows affected (0.82 sec)

2. 샘플 데이터 삽입

INSERT 명령으로 여러 개의 레코드를 한 번에 추가합니다.

mysql> INSERT INTO DemoTable1567 VALUES(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),();
Query OK, 37 rows affected (0.37 sec)
Records: 37  Duplicates: 0  Warnings: 0

이렇게 하면 자동 증가(AUTO_INCREMENT)에 의해 Id가 1부터 37까지 총 37개의 행이 생성됩니다.

3. 전체 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM DemoTable1567;

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

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
+----+
37 rows in set (0.00 sec)

4. 마지막 30개 행 조회 쿼리

이제 핵심인 마지막 30개 행을 가져오는 쿼리입니다. Id를 내림차순(DESC)으로 정렬하고 상위 30개만 제한하면, 결과적으로 가장 최근(마지막)에 입력된 30개 행이 반환됩니다.

mysql> SELECT * FROM DemoTable1567 ORDER BY Id DESC LIMIT 30;

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

+----+
| Id |
+----+
| 37 |
| 36 |
| 35 |
| 34 |
| 33 |
| 32 |
| 31 |
| 30 |
| 29 |
| 28 |
| 27 |
| 26 |
| 25 |
| 24 |
| 23 |
| 22 |
| 21 |
| 20 |
| 19 |
| 18 |
| 17 |
| 16 |
| 15 |
| 14 |
| 13 |
| 12 |
| 11 |
| 10 |
|  9 |
|  8 |
+----+
30 rows in set (0.00 sec)

정리 및 추가 팁

ORDER BY 컬럼명 DESC LIMIT 30 조합은 MySQL에서 마지막 N개 행을 가져오는 가장 일반적이고 효율적인 방법입니다. 몇 가지 참고할 점은 다음과 같습니다.

  • 정렬 기준 컬럼 선택: AUTO_INCREMENT 기본키뿐 아니라 날짜·시간 컬럼(예: created_at)을 기준으로 정렬하면 최신 데이터 순으로 조회할 수 있습니다.
  • 결과를 오름차순으로 되돌리기: 내림차순 결과를 다시 오름차순으로 보고 싶다면 서브쿼리를 활용하세요.
    SELECT * FROM (SELECT * FROM 테이블명 ORDER BY Id DESC LIMIT 30) AS t ORDER BY Id ASC;
  • 성능 최적화: 정렬 기준이 되는 컬럼에 인덱스가 있다면 대용량 테이블에서도 빠른 조회가 가능합니다.