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

MySQL LIMIT과 OFFSET 차이점 이해하기 – 단일 쿼리로 구현하는 방법

MySQL에서 LIMIT은 조회하고자 하는 레코드의 개수를 지정하는 반면, OFFSET은 지정된 위치+1번째부터 레코드를 반환합니다. 즉, OFFSET 값이 3이면 4번째 레코드부터 결과를 가져오게 됩니다.

이 두 절을 함께 사용하면 페이징 처리나 특정 범위의 데이터 조회에 매우 유용합니다. 실제 예제를 통해 동작 방식을 살펴보겠습니다.

1. 테이블 생성

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

mysql> create table DemoTable
-> (
-> Name varchar(100)
-> );
Query OK, 0 rows affected (1.33 sec)

2. 데이터 삽입

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

mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.27 sec)

mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.27 sec)

mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.26 sec)

mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.22 sec)

mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.59 sec)

mysql> insert into DemoTable values('Carol');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.60 sec)

3. 전체 레코드 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

출력 결과

+--------+
| Name |
+--------+
| John |
| Chris |
| David |
| Bob |
| Sam |
| Mike |
| Carol |
| Robert |
+--------+
8 rows in set (0.00 sec)

총 8개의 레코드가 저장되어 있습니다.

4. LIMIT과 OFFSET 함께 사용하기

다음은 LIMIT과 OFFSET을 단일 쿼리에서 함께 사용하는 예시입니다.

mysql> select *from DemoTable limit 4 offset 3;

출력 결과

+-------+
| Name |
+-------+
| Bob |
| Sam |
| Mike |
| Carol |
+-------+
4 rows in set (0.00 sec)

결과 분석

위 쿼리에서 limit 4는 4개의 레코드만 가져오도록 지정하고, offset 3은 앞의 3개 레코드(John, Chris, David)를 건너뛰도록 합니다. 따라서 4번째 레코드인 'Bob'부터 시작하여 'Sam', 'Mike', 'Carol'까지 총 4개의 레코드가 반환됩니다.

참고로 LIMIT 3, 4와 같이 콤마를 사용한 표기법도 있으며, 이 경우 앞의 숫자는 OFFSET, 뒤의 숫자는 LIMIT을 의미합니다. 대량의 데이터를 페이지 단위로 나누어 보여주는 게시판이나 목록 화면을 구현할 때 LIMIT과 OFFSET 조합은 필수적인 기법입니다.