IN 연산자로 여러 값 조회하기
MySQL에서 특정 열의 값이 'x', 'y', 'z'처럼 여러 값 중 하나와 일치하는 행을 조회하고 싶다면 IN 연산자를 사용하면 됩니다. IN 연산자는 WHERE 절에서 지정한 값 목록 중 하나라도 일치하면 해당 행을 반환합니다.
기본 문법은 다음과 같습니다.
SELECT * FROM yourTableName
WHERE yourColumnName IN('yourValue1','yourValue2','yourValue3',...........N);위 문법을 실제로 이해하기 위해 예제 테이블을 만들어 보겠습니다.
1. 테이블 생성
테이블을 생성하는 쿼리는 다음과 같습니다.
mysql> create table InOperatorDemo -> ( -> ClientId int -> ); Query OK, 0 rows affected (0.52 sec)
2. 레코드 삽입
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into InOperatorDemo values(101); Query OK, 1 row affected (0.19 sec) mysql> insert into InOperatorDemo values(110); Query OK, 1 row affected (0.11 sec) mysql> insert into InOperatorDemo values(120); Query OK, 1 row affected (0.17 sec) mysql> insert into InOperatorDemo values(230); Query OK, 1 row affected (0.11 sec) mysql> insert into InOperatorDemo values(270); Query OK, 1 row affected (0.15 sec) mysql> insert into InOperatorDemo values(300); Query OK, 1 row affected (0.14 sec)
3. 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from InOperatorDemo;
실행 결과는 다음과 같습니다.
+----------+ | ClientId | +----------+ | 101 | | 110 | | 120 | | 230 | | 270 | | 300 | +----------+ 6 rows in set (0.00 sec)
4. IN 연산자로 특정 값 조회
이제 IN 연산자를 사용해 ClientId가 120, 270, 300 중 하나에 해당하는 행만 조회해 보겠습니다.
mysql> select *from InOperatorDemo where ClientId IN('120','270','300');실행 결과는 다음과 같습니다.
+----------+ | ClientId | +----------+ | 120 | | 270 | | 300 | +----------+ 3 rows in set (0.00 sec)
결과를 보면 IN 연산자가 지정한 세 개의 값('120', '270', '300')과 일치하는 행만 정확히 필터링하여 반환한 것을 확인할 수 있습니다. 참고로 IN 연산자는 여러 개의 OR 조건을 간결하게 표현하는 것과 동일한 효과를 내므로, 조건이 많아질수록 코드 가독성 면에서 큰 장점이 있습니다.