MySQL에서는 WHERE IN 절을 활용하면 하나의 쿼리에 여러 값을 배열처럼 전달할 수 있습니다. 이 방법은 특정 조건에 해당하는 여러 레코드를 한 번에 조회할 때 매우 유용합니다. 지금부터 예제를 통해 단계별로 살펴보겠습니다.
1. 예제용 테이블 생성
먼저 예제에 사용할 새 테이블을 생성합니다.
mysql> create table PassingAnArrayDemo -> ( -> id int, -> Firstname varchar(100) -> ); Query OK, 0 rows affected (1.60 sec)
id와 Firstname 두 개의 컬럼으로 구성된 간단한 테이블입니다.
2. 샘플 데이터 삽입
이제 테이블에 레코드를 삽입해 보겠습니다.
mysql> insert into PassingAnArrayDemo values(1,'John'),(2,'Carol'),(3,'Smith'),(4,'Bob'),(5,'Johnson'),(6,'David'),(7,'Sam'),(8,'Jessica'); Query OK, 8 rows affected (0.32 sec) Records: 8 Duplicates: 0 Warnings: 0
3. 전체 레코드 조회
삽입된 모든 레코드를 확인합니다.
mysql> select *from PassingAnArrayDemo;
다음은 실행 결과입니다.
+------+-----------+ | id | Firstname | +------+-----------+ | 1 | John | | 2 | Carol | | 3 | Smith | | 4 | Bob | | 5 | Johnson | | 6 | David | | 7 | Sam | | 8 | Jessica | +------+-----------+ 8 rows in set (0.00 sec)
4. WHERE IN 절로 배열 전달하기
다음은 WHERE IN 절을 사용하여 배열 형태의 값을 쿼리에 전달하는 기본 구문입니다.
mysql> SELECT * -> FROM PassingAnArrayDemo where id IN(1,3,6);
다음은 실행 결과입니다.
+------+-----------+ | id | Firstname | +------+-----------+ | 1 | John | | 3 | Smith | | 6 | David | +------+-----------+ 3 rows in set (0.04 sec)
위 예제에서 볼 수 있듯이 IN(1,3,6)처럼 괄호 안에 원하는 값을 쉼표로 구분하여 나열하면, 해당 값과 일치하는 레코드만 필터링되어 반환됩니다. 실제 애플리케이션에서는 PHP의 implode()나 자바스크립트의 join() 등을 사용해 배열을 쉼표로 구분된 문자열로 변환한 뒤 IN 절에 동적으로 삽입하는 방식으로 활용할 수 있습니다.