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

MySQL에서 처음 10개의 레코드를 건너뛰고 조회하는 방법 (LIMIT OFFSET 완벽 가이드)

MySQL에서 쿼리 결과 중 처음 10개의 레코드를 건너뛰고 싶다면 LIMIT 절과 OFFSET 키워드를 함께 사용하면 됩니다. 이 기능은 페이지네이션(pagination)을 구현하거나 특정 범위의 데이터만 조회할 때 매우 유용합니다.

기본 문법

처음 10개의 결과를 건너뛰려면 아래와 같이 'limit offset' 구문을 사용합니다.

SELECT * FROM yourTableName LIMIT 10 OFFSET lastValue;

여기서 lastValue 자리에 건너뛰고 싶은 레코드 수를 지정하면, 해당 개수만큼의 행을 제외한 나머지 결과가 반환됩니다.

예제 테이블 생성하기

실습을 위해 먼저 샘플 테이블을 생성해 보겠습니다. 다음은 테이블을 만드는 쿼리입니다.

mysql> create table SkipFirstTenRecords
    -> (
       -> StudentId int,
       -> StudentName varchar(200)
    -> );
Query OK, 0 rows affected (0.53 sec)

레코드 삽입하기

이제 INSERT 명령어를 사용하여 테이블에 학생 데이터를 입력합니다.

mysql> insert into SkipFirstTenRecords values(100,'John');
Query OK, 1 row affected (0.12 sec)

mysql> insert into SkipFirstTenRecords values(101,'Johnson');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SkipFirstTenRecords values(102,'Carol');
Query OK, 1 row affected (0.10 sec)

mysql> insert into SkipFirstTenRecords values(103,'Smith');
Query OK, 1 row affected (0.32 sec)

mysql> insert into SkipFirstTenRecords values(104,'Bob');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SkipFirstTenRecords values(105,'David');
Query OK, 1 row affected (0.18 sec)

mysql> insert into SkipFirstTenRecords values(106,'Sam');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SkipFirstTenRecords values(107,'Taylor');
Query OK, 1 row affected (0.23 sec)

mysql> insert into SkipFirstTenRecords values(108,'Ramit');
Query OK, 1 row affected (0.16 sec)

mysql> insert into SkipFirstTenRecords values(109,'Belly');
Query OK, 1 row affected (0.18 sec)

mysql> insert into SkipFirstTenRecords values(110,'Aaron');
Query OK, 1 row affected (0.16 sec)

mysql> insert into SkipFirstTenRecords values(111,'Peter');
Query OK, 1 row affected (0.10 sec)

mysql> insert into SkipFirstTenRecords values(112,'Travis');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SkipFirstTenRecords values(113,'Alex');
Query OK, 1 row affected (0.18 sec)

mysql> insert into SkipFirstTenRecords values(114,'Pat');
Query OK, 1 row affected (0.11 sec)

테이블에 저장된 전체 레코드를 확인해 보겠습니다.

mysql> select *from SkipFirstTenRecords;

실행 결과는 다음과 같습니다. 총 15개의 레코드가 조회됩니다.

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       100 | John        |
|       101 | Johnson     |
|       102 | Carol       |
|       103 | Smith       |
|       104 | Bob         |
|       105 | David       |
|       106 | Sam         |
|       107 | Taylor      |
|       108 | Ramit       |
|       109 | Belly       |
|       110 | Aaron       |
|       111 | Peter       |
|       112 | Travis      |
|       113 | Alex        |
|       114 | Pat         |
+-----------+-------------+
15 rows in set (0.00 sec)

처음 10개 레코드 건너뛰기

이제 위 테이블에서 처음 10개의 레코드를 건너뛰는 쿼리를 실행해 보겠습니다.

mysql> select *from SkipFirstTenRecords limit 10 offset 10;

실행 결과는 다음과 같습니다. 앞의 10개 레코드(100~109번)가 제외되고, 마지막 5개 레코드만 출력된 것을 확인할 수 있습니다.

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       110 | Aaron       |
|       111 | Peter       |
|       112 | Travis      |
|       113 | Alex        |
|       114 | Pat         |
+-----------+-------------+
5 rows in set (0.00 sec)

추가 팁: OFFSET 생략형 문법

MySQL에서는 OFFSET 키워드를 생략하고 콤마(,)로 대체할 수도 있습니다. 즉, LIMIT 5 OFFSET 10LIMIT 10, 5와 동일하게 동작합니다. 단, 콤마 형식을 사용할 때는 첫 번째 숫자가 오프셋(건너뛸 행 수), 두 번째 숫자가 반환할 행 수라는 점에 주의해야 합니다.