MySQL LIMIT으로 특정 행 범위의 데이터 가져오기
MySQL에서 두 행 사이에 있는 데이터를 조회하려면 LIMIT 절을 활용하면 됩니다. LIMIT은 LIMIT 오프셋, 개수 형태로 작성할 수 있어서, 원하는 시작 위치부터 지정한 개수만큼의 행만 간편하게 추출할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(10)
);
Query OK, 0 rows affected (0.22 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable(Name) values('Larry');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.04 sec)
mysql> insert into DemoTable(Name) values('Bob');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.04 sec)
mysql> insert into DemoTable(Name) values('Mike');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable(Name) values('Carol');
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.05 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------+
| Id | Name |
+----+--------+
| 1 | Larry |
| 2 | Robert |
| 3 | Chris |
| 4 | David |
| 5 | Bob |
| 6 | Sam |
| 7 | Mike |
| 8 | Carol |
| 9 | John |
+----+--------+
9 rows in set (0.00 sec)
4. 두 행 사이의 데이터 조회하기
다음은 두 행 사이의 데이터를 가져오는 쿼리입니다.
mysql> select *from DemoTable limit 2,3;
실행 결과는 다음과 같습니다.
+----+-------+
| Id | Name |
+----+-------+
| 3 | Chris |
| 4 | David |
| 5 | Bob |
+----+-------+
3 rows in set (0.00 sec)
LIMIT 절 동작 원리 이해하기
LIMIT 2,3에서 첫 번째 숫자인 2는 오프셋(offset)을 의미하며, 오프셋은 0부터 시작합니다. 즉, 앞의 2개 행을 건너뛰고 세 번째 행부터 결과를 가져옵니다. 두 번째 숫자인 3은 반환할 행의 개수를 뜻합니다. 따라서 위 쿼리는 세 번째 행(Id 3, Chris)부터 세 개의 행(Id 3~5)을 반환하게 됩니다.
이처럼 LIMIT 절을 활용하면 대용량 테이블에서도 원하는 구간의 데이터만 효율적으로 조회할 수 있으며, 페이지네이션(pagination) 기능을 구현할 때도 널리 사용됩니다.