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

MySQL에서 내림차순(DESC) 정렬 후 상위 3개 레코드만 조회하는 방법

MySQL에서 데이터를 내림차순(DESC)으로 정렬한 뒤 처음 3개의 레코드만 표시하려면 ORDER BY ... DESC 절과 LIMIT 절을 함께 사용하면 됩니다. 이 방법은 최신 데이터나 상위 항목 몇 개만 빠르게 확인해야 할 때 매우 유용합니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(100)
);
Query OK, 0 rows affected (0.59 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable(UserName) values('Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(UserName) values('Robert');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(UserName) values('Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(UserName) values('David');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(UserName) values('Mike');
Query OK, 1 row affected (0.10 sec)

3. 전체 레코드 확인하기

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

mysql> select *from DemoTable;

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

+--------+----------+
| UserId | UserName |
+--------+----------+
|      1 | Chris    |
|      2 | Robert   |
|      3 | Bob      |
|      4 | David    |
|      5 | Mike     |
+--------+----------+
5 rows in set (0.00 sec)

4. 내림차순 정렬 후 상위 3개 레코드 조회하기

특정 컬럼을 기준으로 내림차순(DESC) 정렬을 적용한 후, LIMIT 절로 처음 3개의 레코드만 가져오는 쿼리는 다음과 같습니다.

mysql> select *from DemoTable order by UserId DESC LIMIT 0,3;

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

+--------+----------+
| UserId | UserName |
+--------+----------+
|      5 | Mike     |
|      4 | David    |
|      3 | Bob      |
+--------+----------+
3 rows in set (0.00 sec)

참고: LIMIT 구문 이해하기

LIMIT 0,3에서 첫 번째 숫자(0)는 시작 위치(오프셋)를, 두 번째 숫자(3)는 가져올 레코드 수를 의미합니다. 따라서 LIMIT 3처럼 오프셋을 생략해도 동일한 결과를 얻을 수 있습니다. 또한 OFFSET을 조절하면 페이지네이션(페이징 처리)도 손쉽게 구현할 수 있습니다.