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

MySQL IN() 함수로 열 이름과 값 목록을 비교하는 방법

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 조건을 간결하게 표현할 수 있어 쿼리의 가독성과 유지보수성이 크게 향상됩니다.