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

MySQL 쿼리에서 과도한 OR 조건문 피하기: IN() 연산자 활용법

MySQL에서 여러 조건을 검색할 때 OR 문을 반복해서 사용하면 쿼리가 길어지고 가독성이 떨어지며, 유지보수도 어려워집니다. 이런 경우 IN() 연산자를 사용하면 훨씬 간결하고 효율적인 쿼리를 작성할 수 있습니다.

실제 예제를 통해 살펴보겠습니다. 먼저 테이블을 생성합니다.

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(40)
);
Query OK, 0 rows affected (0.89 sec)

샘플 데이터 삽입

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

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(Name) values('Mike');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.14 sec)

전체 레코드 조회

select 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+--------+
| Id | Name   |
+----+--------+
|  1 | Chris  |
|  2 | Robert |
|  3 | Mike   |
|  4 | Sam    |
|  5 | David  |
+----+--------+
5 rows in set (0.00 sec)

IN()을 사용한 간결한 쿼리

만약 Id가 1, 3, 5인 레코드를 조회하고 싶다면, 일반적으로 다음과 같이 OR 문을 여러 번 사용해야 합니다.

select *from DemoTable where Id = 1 OR Id = 3 OR Id = 5;

하지만 IN()을 사용하면 아래처럼 한 줄로 깔끔하게 작성할 수 있습니다.

mysql> select *from DemoTable where Id IN(1,3,5);

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

+----+-------+
| Id | Name  |
+----+-------+
|  1 | Chris |
|  3 | Mike  |
|  5 | David |
+----+-------+
3 rows in set (0.00 sec)

정리

IN() 연산자는 지정된 값 목록 중 하나라도 일치하면 해당 행을 반환합니다. OR 문을 반복해서 나열하는 것보다 코드가 짧아지고 읽기 쉬우며, 조건이 많아질수록 그 장점이 더욱 커집니다. 또한 NOT IN()을 활용하면 특정 값을 제외한 조회도 손쉽게 처리할 수 있습니다.