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

MySQL에서 여러 WHERE 조건 처리하기 – IN() 연산자 활용 방법

MySQL에서 여러 개의 WHERE 조건을 처리하려면 IN() 연산자를 사용하는 것이 가장 효율적입니다. OR 조건을 여러 번 나열하는 대신, 조회하고 싶은 값들을 목록 형태로 전달하면 한 번의 쿼리로 손쉽게 처리할 수 있습니다.

기본 문법

select *from yourTableName where yourColumnName IN(yourValue1,yourValue2,...N);

위 문법처럼 컬럼명 뒤에 IN() 안에 원하는 값들을 쉼표로 구분하여 나열하면, 해당 값들과 일치하는 모든 행이 한 번에 조회됩니다.

1단계: 테이블 생성

먼저 예제로 사용할 테이블을 만들어 보겠습니다.

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

2단계: 데이터 삽입

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

mysql> insert into DemoTable values(10,'John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(59,'Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(20,'Sam');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(45,'David');
Query OK, 1 row affected (0.73 sec)

3단계: 전체 레코드 확인

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과:

+------+-------+
| Id   | Name  |
+------+-------+
| 10   | John  |
| 59   | Carol |
| 20   | Sam   |
| 45   | David |
+------+-------+
4 rows in set (0.00 sec)

4단계: IN()으로 여러 조건 조회

다음은 IN()을 사용해 여러 WHERE 조건을 구현한 쿼리입니다. Id가 59 또는 45인 레코드만 조회되는 것을 확인할 수 있습니다.

mysql> select *from DemoTable where Id IN(59,45);

출력 결과:

+------+-------+
| Id   | Name  |
+------+-------+
| 59   | Carol |
| 45   | David |
+------+-------+
2 rows in set (0.14 sec)

참고 사항

IN()은 내부적으로 OR 조건과 동일하게 동작하지만, 코드가 훨씬 간결하고 가독성이 뛰어납니다. 예를 들어 위 쿼리는 아래와 같이 작성할 수도 있습니다.

select *from DemoTable where Id = 59 OR Id = 45;

또한 NOT IN()을 사용하면 지정한 값들을 제외한 나머지 레코드를 조회할 수 있어, 특정 데이터를 필터링해야 할 때도 유용하게 활용할 수 있습니다.