MySQL에서 IN() 함수는 일반적으로 특정 값 목록과 비교할 때 사용되지만, 열 이름 자체를 표현식(Expression)으로 지정하여 해당 열의 값들이 목록 안에 있는지 확인할 수도 있습니다. 만약 열의 값 중 하나라도 목록에 포함되어 있다면, 그 행이 결과로 출력됩니다.
예시 데이터 준비
이해를 돕기 위해 다음과 같은 데이터를 가진 employee 테이블을 살펴보겠습니다.
mysql> Select * from Employee; +----+--------+--------+ | ID | Name | Salary | +----+--------+--------+ | 1 | Gaurav | 50000 | | 2 | Rahul | 20000 | | 3 | Advik | 25000 | | 4 | Aarav | 65000 | | 5 | Ram | 20000 | | 6 | Mohan | 30000 | +----+--------+--------+ 6 rows in set (0.00 sec)
IN() 함수에 열 이름 적용하기
이제 'ID' 열을 IN() 함수의 표현식으로 사용하여 다음과 같이 쿼리를 작성할 수 있습니다.
mysql> Select * from Employee WHERE ID IN(6,2,3,20,10,9); +----+-------+--------+ | ID | Name | Salary | +----+-------+--------+ | 2 | Rahul | 20000 | | 3 | Advik | 25000 | | 6 | Mohan | 30000 | +----+-------+--------+ 3 rows in set (0.00 sec)
결과 분석
위 결과 집합을 보면, IN() 함수는 'ID' 열의 각 값을 목록 (6,2,3,20,10,9)의 값들과 비교하고, 일치하는 행(ID가 2, 3, 6인 행)만 결과로 반환했음을 알 수 있습니다. 목록에 없는 값(20, 10, 9)은 테이블에 존재하지 않으므로 무시되며, 오류 없이 정상적으로 처리됩니다.
이처럼 IN() 함수에 열 이름을 활용하면 여러 개의 OR 조건을 간결하게 표현할 수 있어 쿼리의 가독성과 유지보수성이 크게 향상됩니다.