MySQL에서 전체 데이터가 아닌 특정 조건에 맞는 행(row)만 가져오고 싶다면 WHERE 절과 ORDER BY, LIMIT를 함께 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 특정 행만 조회하는 쿼리를 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable1972
(
Section char(1),
StudentName varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 학생 데이터를 입력합니다.
mysql> insert into DemoTable1972 values('D','Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1972 values('B','David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1972 values('A','Mike');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1972 values('C','Carol');
Query OK, 1 row affected (0.00 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1972;
실행 결과는 다음과 같습니다.
+---------+-------------+ | Section | StudentName | +---------+-------------+ | D | Chris | | B | David | | A | Mike | | C | Carol | +---------+-------------+ 4 rows in set (0.00 sec)
4. 특정 행만 조회하는 쿼리
이제 조건에 맞는 특정 행만 가져오는 쿼리를 작성해 보겠습니다. 아래 쿼리는 Section 값이 'C'보다 큰 행을 Section 기준으로 정렬한 뒤, 최대 2개의 행만 반환합니다.
mysql> select * from DemoTable1972 where Section > 'C' order by Section limit 2;
실행 결과는 다음과 같습니다.
+---------+-------------+ | Section | StudentName | +---------+-------------+ | D | Chris | +---------+-------------+ 1 row in set (0.00 sec)
쿼리 동작 원리
- WHERE Section > 'C': 문자 비교를 통해 Section이 'C'보다 뒤에 오는 값(예: 'D')만 필터링합니다.
- ORDER BY Section: 결과를 Section 기준으로 오름차순 정렬합니다.
- LIMIT 2: 정렬된 결과 중 최대 2개의 행만 반환하도록 제한합니다.
이처럼 WHERE 절로 조건을 지정하고, ORDER BY로 정렬한 후, LIMIT로 개수를 제한하면 원하는 특정 행만 손쉽게 조회할 수 있습니다. 대용량 테이블에서 필요한 데이터만 효율적으로 가져올 때 매우 유용하게 활용됩니다.