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

MySQL LIMIT로 단일 행 조회하는 방법

MySQL LIMIT로 단일 행 조회하기

MySQL에서 WHERE 조건에 해당하는 행이 여러 개 있더라도 그중 하나의 행만 가져오고 싶은 경우가 있습니다. 이럴 때 LIMIT 절을 사용하면 간단하게 해결할 수 있습니다. 이 글에서는 테이블 생성부터 데이터 삽입, 그리고 LIMIT을 활용한 단일 행 조회까지 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 기본 키(Primary Key)를 포함한 테이블을 생성합니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table selectWithPrimaryKey
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Name varchar(20),
    -> Age int,
    -> Marks int,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.78 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Larry',24,98);
Query OK, 1 row affected (0.15 sec)

mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('John',23,89);
Query OK, 1 row affected (0.21 sec)

mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Mike',21,85);
Query OK, 1 row affected (0.18 sec)

mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Sam',26,56);
Query OK, 1 row affected (0.18 sec)

mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Carol',21,59);
Query OK, 1 row affected (0.18 sec)

mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Bob',20,91);
Query OK, 1 row affected (0.21 sec)

mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('David',28,93);
Query OK, 1 row affected (0.15 sec)

3. 전체 레코드 확인하기

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

mysql> select *from selectWithPrimaryKey;

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

+----+-------+------+-------+
| Id | Name  | Age  | Marks |
+----+-------+------+-------+
| 1  | Larry | 24   | 98    |
| 2  | John  | 23   | 89    |
| 3  | Mike  | 21   | 85    |
| 4  | Sam   | 26   | 56    |
| 5  | Carol | 21   | 59    |
| 6  | Bob   | 20   | 91    |
| 7  | David | 28   | 93    |
+----+-------+------+-------+
7 rows in set (0.00 sec)

4. LIMIT으로 단일 행 조회하기

이제 LIMIT을 사용해 조건에 맞는 행 중 하나만 조회하는 쿼리를 살펴보겠습니다.

mysql> select *from selectWithPrimaryKey where Id = 10 or Age = 29 or Marks = 89 limit 1;

위 쿼리는 Id가 10이거나, 나이(Age)가 29이거나, 점수(Marks)가 89인 행을 찾되, 결과를 최대 1개까지만 반환합니다. 실행 결과는 다음과 같습니다.

+----+------+------+-------+
| Id | Name | Age  | Marks |
+----+------+------+-------+
| 2  | John | 23   | 89    |
+----+------+------+-------+
1 row in set (0.00 sec)

결과 분석 및 정리

조건 중 Id = 10과 Age = 29에 해당하는 행은 없지만, Marks = 89 조건에 일치하는 John의 레코드가 반환된 것을 확인할 수 있습니다. 핵심은 LIMIT 1입니다. 조건에 맞는 행이 여러 개 존재하더라도 첫 번째 행 하나만 결과로 돌려받게 됩니다.

이 방식은 대용량 테이블에서 특정 조건을 만족하는 데이터의 존재 여부만 빠르게 확인하거나, 대표 값 하나만 필요한 경우에 특히 유용합니다. 불필요한 추가 조회를 줄여 쿼리 성능을 개선하는 데도 도움이 됩니다.