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

MySQL 쿼리에서 n번째 레코드를 조회하는 방법 (LIMIT 활용)

MySQL 쿼리 결과에서 n번째 레코드를 가져오려면 LIMIT 절을 사용하면 됩니다. LIMIT은 오프셋(offset)과 반환할 행 수를 지정하여 원하는 위치의 레코드만 손쉽게 추출할 수 있게 해주는 강력한 기능입니다.

기본 문법

select * from yourTableName order by yourColumnName limit n,1;

여기서 limit n,1의 의미는 다음과 같습니다.

  • n: 건너뛸 레코드 수(오프셋). 즉, 앞에서부터 n개의 행을 제외합니다.
  • 1: 오프셋 이후 반환할 레코드 수. 여기서는 딱 한 개의 행만 가져옵니다.

예를 들어 limit 5,1이라면 6번째 레코드가 반환됩니다. 즉, n번째 레코드를 얻으려면 오프셋 값으로 n-1이 아닌 n을 지정해야 한다는 점에 유의하세요.

예제 테이블 생성

위 문법을 실제로 이해하기 위해 예제 테이블을 만들어 보겠습니다. 다음 쿼리로 테이블을 생성합니다.

mysql> create table NthRecordDemo
   -> (
   -> Id int,
   -> Name varchar(200)
   -> );
Query OK, 0 rows affected (0.92 sec)

이어서 아래 쿼리로 샘플 데이터를 삽입합니다.

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

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

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

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

mysql> insert into NthRecordDemo values(104,'Johnson');
Query OK, 1 row affected (0.16 sec)

mysql> insert into NthRecordDemo values(105,'Sam');
Query OK, 1 row affected (0.16 sec)

mysql> insert into NthRecordDemo values(106,'David');
Query OK, 1 row affected (0.13 sec)

전체 레코드 확인

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

mysql> select *from NthRecordDemo;

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

+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 101  | Bob     |
| 102  | Carol   |
| 103  | Smith   |
| 104  | Johnson |
| 105  | Sam     |
| 106  | David   |
+------+---------+
7 rows in set (0.00 sec)

n번째 레코드 조회하기

이제 LIMIT 절을 사용해 테이블에서 n번째 레코드를 가져오는 쿼리를 실행해 보겠습니다. 아래 예제는 Id 기준으로 정렬했을 때 7번째(오프셋 6) 레코드를 조회합니다.

mysql> select *from NthRecordDemo order by Id limit 6,1;

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

+------+-------+
| Id   | Name  |
+------+-------+
| 106  | David |
+------+-------+
1 row in set (0.00 sec)

이처럼 order by로 정렬 순서를 명확히 지정하고 limit n,1을 적용하면, 원하는 위치의 레코드를 정확하게 조회할 수 있습니다. 참고로 ORDER BY 절을 생략하면 MySQL이 반환하는 행의 순서가 보장되지 않으므로, n번째 레코드 조회 시에는 반드시 정렬 조건을 함께 사용하는 것이 좋습니다.