MySQL에서 여러 값 중 하나와 일치하는 레코드를 찾아 조회하려면 IN() 연산자를 사용하면 됩니다. IN()은 WHERE 절과 함께 사용되며, 지정한 값 목록 중 하나라도 일치하는 행만 결과로 반환합니다.
이번 글에서는 예제 테이블을 만들고, IN()을 활용해 특정 Id에 해당하는 레코드를 가져오는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 CREATE TABLE 문으로 테이블을 생성합니다. Gender 컬럼에는 ENUM 타입을 사용해 'Male' 또는 'Female' 값만 입력되도록 제한했습니다.
mysql> create table DemoTable
(
Id int,
FirstName varchar(20),
Gender ENUM('Male','Female')
);
Query OK, 0 rows affected (1.73 sec)2. 샘플 데이터 삽입
다음으로 INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(1,'Chris','Male'); Query OK, 1 row affected (0.47 sec) mysql> insert into DemoTable values(10,'Emma','Female'); Query OK, 1 row affected (1.88 sec) mysql> insert into DemoTable values(9,'Emma','Male'); Query OK, 1 row affected (0.70 sec) mysql> insert into DemoTable values(11,'Isabella','Female'); Query OK, 1 row affected (0.46 sec)
3. 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 데이터가 정상적으로 들어갔는지 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+------+-----------+--------+ | Id | FirstName | Gender | +------+-----------+--------+ | 1 | Chris | Male | | 10 | Emma | Female | | 9 | Emma | Male | | 11 | Isabella | Female | +------+-----------+--------+ 4 rows in set (0.00 sec)
4. IN()으로 일치하는 레코드 조회
이제 핵심인 IN() 쿼리입니다. 아래 쿼리는 Id가 1 또는 11인 레코드만 골라서 가져옵니다.
mysql> select *from DemoTable where Id IN(1,11);
실행 결과, 조건에 일치하는 두 개의 레코드만 출력됩니다.
+------+-----------+--------+ | Id | FirstName | Gender | +------+-----------+--------+ | 1 | Chris | Male | | 11 | Isabella | Female | +------+-----------+--------+ 2 rows in set (0.00 sec)
IN() 연산자의 장점
IN()은 Id = 1 OR Id = 11처럼 OR 조건을 여러 번 나열하는 것보다 쿼리가 간결하고 가독성이 뛰어납니다. 또한 값이 많아지더라도 괄호 안에 쉼표로 구분해 나열하기만 하면 되므로 유지보수도 훨씬 편리합니다.