MySQL에서 처음 10개 레코드 선택하기
테이블에서 처음 10개의 레코드를 선택하려면 먼저 레코드를 오름차순(ASC) 또는 내림차순(DESC)으로 정렬한 뒤, LIMIT 10을 사용하여 10개의 레코드만 가져오면 됩니다. 기본적인 쿼리 형태는 다음과 같습니다.
select *from (select *from yourTableName ORDER BY yourColumnName ASC LIMIT 10)anyAliasName ORDER BY yourColumnName DESC;
아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable683(Page int);
Query OK, 0 rows affected (0.83 sec)
2단계: 레코드 삽입
insert 명령을 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable683 values(100);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable683 values(101);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable683 values(102);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable683 values(103);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable683 values(104);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable683 values(105);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable683 values(106);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable683 values(107);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable683 values(108);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable683 values(109);
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable683 values(110);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable683 values(111);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable683 values(112);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable683 values(113);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable683 values(114);
Query OK, 1 row affected (0.10 sec)
3단계: 전체 레코드 확인
select 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable683;
실행 결과는 다음과 같으며, 총 15개의 레코드가 저장되어 있습니다.
+------+
| Page |
+------+
| 100 |
| 101 |
| 102 |
| 103 |
| 104 |
| 105 |
| 106 |
| 107 |
| 108 |
| 109 |
| 110 |
| 111 |
| 112 |
| 113 |
| 114 |
+------+
15 rows in set (0.00 sec)
4단계: 처음 10개 레코드 선택 쿼리 실행
다음은 MySQL에서 처음 10개 레코드를 선택하는 실제 쿼리입니다. 서브쿼리에서 Page 컬럼을 오름차순으로 정렬한 후 LIMIT 10으로 상위 10개를 추출하고, 외부 쿼리에서 이를 다시 내림차순으로 정렬합니다.
mysql> select *from (select *from DemoTable683 ORDER BY Page ASC LIMIT 10)tbl ORDER BY Page DESC;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+------+
| Page |
+------+
| 109 |
| 108 |
| 107 |
| 106 |
| 105 |
| 104 |
| 103 |
| 102 |
| 101 |
| 100 |
+------+
10 rows in set (0.00 sec)
이처럼 ORDER BY로 정렬 순서를 지정하고 LIMIT으로 가져올 레코드 수를 제한하면, 전체 데이터 중 원하는 개수만큼의 레코드를 손쉽게 조회할 수 있습니다. 외부 쿼리의 정렬 방향을 조절하면 오름차순 또는 내림차순 어느 쪽으로도 결과를 출력할 수 있습니다.