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

MySQL 단일 쿼리로 여러 행을 한 번에 조회하는 방법

MySQL에서 하나의 쿼리만으로 특정 조건에 맞는 여러 행(row)을 동시에 조회하고 싶다면 IN 연산자를 활용하면 됩니다. IN 연산자는 WHERE 절에서 여러 값을 지정할 수 있게 해주어, OR 조건을 여러 번 나열하는 것보다 훨씬 간결하고 가독성이 좋습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
(
    Id int,
    Name varchar(100)
);
Query OK, 0 rows affected (0.60 sec)

2. 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 샘플 레코드를 추가합니다.

mysql> insert into DemoTable values(100,'Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(110,'David');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(120,'Robert');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(130,'Mike');
Query OK, 1 row affected (0.13 sec)

3. 전체 데이터 확인하기

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

mysql> select *from DemoTable;

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

+------+--------+
|   Id | Name   |
+------+--------+
|  100 | Chris  |
|  110 | David  |
|  120 | Robert |
|  130 | Mike   |
+------+--------+
4 rows in set (0.00 sec)

4. IN 연산자로 여러 행 조회하기

단일 쿼리에서 원하는 여러 행을 한 번에 가져오려면 WHERE 절에 IN 연산자를 사용합니다. 아래 예제에서는 Id가 100, 120, 130인 행만 조회합니다.

mysql> select *from DemoTable where Id IN(100,120,130);

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

+------+--------+
|   Id | Name   |
+------+--------+
|  100 | Chris  |
|  120 | Robert |
|  130 | Mike   |
+------+--------+
3 rows in set (0.02 sec)

정리

IN 연산자를 사용하면 WHERE Id = 100 OR Id = 120 OR Id = 130처럼 조건을 반복해서 작성할 필요 없이, 괄호 안에 원하는 값들을 쉼표로 나열하기만 하면 됩니다. 이 방식은 코드가 짧아질 뿐만 아니라 실행 계획 최적화에도 유리하여 대량의 데이터를 조회할 때 특히 효과적입니다. 참고로 NOT IN을 사용하면 지정한 값들을 제외한 나머지 행을 조회할 수도 있습니다.