MySQL에서 조회 결과 중 일부 행을 건너뛰고 싶다면 LIMIT과 OFFSET 절을 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 행을 건너뛰며 조회하는 방법까지 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable860(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100)
);
Query OK, 0 rows affected (0.73 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable860(Name) values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable860(Name) values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable860(Name) values('David');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable860(Name) values('Bob');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable860(Name) values('Mike');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable860(Name) values('Sam');
Query OK, 1 row affected (0.07 sec)3. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable860;
실행 결과는 다음과 같습니다.
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | David | | 4 | Bob | | 5 | Mike | | 6 | Sam | +----+--------+ 6 rows in set (0.00 sec)
4. LIMIT OFFSET으로 행 건너뛰기
이제 핵심인 행 건너뛰기 쿼리입니다. 아래와 같이 limit 3 offset 2를 지정하면 앞의 2개 행을 건너뛰고, 그 다음부터 3개의 행만 가져옵니다.
mysql> select *from DemoTable860 limit 3 offset 2;
실행 결과는 다음과 같습니다.
+----+-------+ | Id | Name | +----+-------+ | 3 | David | | 4 | Bob | | 5 | Mike | +----+-------+ 3 rows in set (0.00 sec)
동작 원리 정리
- OFFSET 2: 결과 집합의 처음 2개 행(Id 1, 2)을 건너뜁니다.
- LIMIT 3: 건너뛴 후 남은 행 중 최대 3개만 반환합니다.
즉, OFFSET은 건너뛸 행의 개수, LIMIT는 가져올 행의 개수를 의미합니다. 참고로 MySQL에서는 limit 2, 3처럼 쉼표 구문을 사용해 OFFSET과 LIMIT을 한 번에 지정할 수도 있습니다. 이 기능은 게시판 페이징 처리처럼 대량의 데이터를 페이지 단위로 나누어 조회할 때 매우 유용하게 활용됩니다.