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

MySQL 단일 쿼리로 처음 10개 행을 가져온 뒤 나머지 행 레코드까지 표시하는 방법

MySQL에서 LIMIT 절을 활용하면 처음 일부 행을 우선적으로 가져오고, 이어서 나머지 행 레코드도 하나의 쿼리로 함께 조회할 수 있습니다. 이번 글에서는 예제 테이블을 만들고 실제 쿼리 동작 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

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

mysql> create table DemoTable
(
    Id int
);
Query OK, 0 rows affected (0.71 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable values(101);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values(102);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(103);
Query OK, 1 row affected (0.64 sec)
mysql> insert into DemoTable values(104);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(105);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values(106);
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values(107);
Query OK, 1 row affected (0.44 sec)
mysql> insert into DemoTable values(108);
Query OK, 1 row affected (0.62 sec)
mysql> insert into DemoTable values(109);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(110);
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable values(111);
Query OK, 1 row affected (0.94 sec)
mysql> insert into DemoTable values(112);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values(113);
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable values(114);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(115);
Query OK, 1 row affected (0.25 sec)

3. 전체 레코드 확인

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

mysql> select *from DemoTable;

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

+------+
| Id   |
+------+
|  100 |
|  101 |
|  102 |
|  103 |
|  104 |
|  105 |
|  106 |
|  107 |
|  108 |
|  109 |
|  110 |
|  111 |
|  112 |
|  113 |
|  114 |
|  115 |
+------+
16 rows in set (0.00 sec)

총 16개의 행이 저장되어 있는 것을 확인할 수 있습니다.

4. 처음 10개 행부터 나머지 행까지 한 번에 조회하기

처음 10개 행을 먼저 가져오고 그 뒤에 나머지 행 레코드를 이어서 표시하는 쿼리는 다음과 같습니다.

mysql> select *from DemoTable LIMIT 999 offset 0;

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

+------+
| Id   |
+------+
|  100 |
|  101 |
|  102 |
|  103 |
|  104 |
|  105 |
|  106 |
|  107 |
|  108 |
|  109 |
|  110 |
|  111 |
|  112 |
|  113 |
|  114 |
|  115 |
+------+
16 rows in set (0.00 sec)

쿼리 설명

위 쿼리에서 사용된 핵심 문법은 다음과 같습니다.

  • LIMIT 999: 최대 999개의 행까지 반환하겠다는 의미입니다. 실제 행 수가 999개보다 적다면 존재하는 모든 행이 반환됩니다.
  • OFFSET 0: 첫 번째 행부터 결과를 시작하겠다는 의미입니다. OFFSET 값을 변경하면 원하는 위치부터 행을 건너뛰며 조회할 수 있습니다.

즉, 처음 10개 행만 보고 싶다면 LIMIT 10 OFFSET 0, 처음 10개 행을 제외한 나머지 행만 보고 싶다면 LIMIT 999 OFFSET 10처럼 OFFSET 값을 조정하면 됩니다. 이렇게 LIMIT과 OFFSET을 조합하면 페이징 처리나 순차적 데이터 조회 등 다양한 상황에서 유용하게 활용할 수 있습니다.