본문 바로가기
기획자가 알아야 할 IT지식/기획자가 알아야 할 SQL

10강. 여러 개의 리스트 값을 검색하는 방법 - IN과 NOT IN

by 일잘러로 살기 2025. 3. 22.

이번 강의에서는 여러 개의 값을 한 번에 비교하여 데이터를 검색하는 방법인 INNOT IN 연산자에 대해 배울 거야.
이 연산자들은 여러 개의 값 중 하나에 일치하는 값을 찾거나, 일치하지 않는 값을 찾을 때 사용돼.


✅ 1. IN 연산자

IN 연산자는 주어진 값 목록 중 하나와 일치하는 데이터를 찾을 때 사용해.
간단하게 여러 개의 값을 동시에 비교할 수 있어!


1) 기본 사용법

📌 여러 개의 값을 한 번에 비교할 때 IN 사용

SELECT name, email
  FROM customers
 WHERE name IN ('김철수', '이영희', '박민준');


📌 실행 결과

설명: IN ('김철수', '이영희', '박민준')은 이름이 '김철수', '이영희', '박민준'인 고객을 모두 찾는 조건이야.
IN을 사용하면 여러 개의 값을 한 번에 처리할 수 있어서 OR을 여러 번 쓰는 것보다 깔끔하고 효율적이야!


2) 서브쿼리와 함께 사용

📌 연봉이 5000 이상인 직원들의 부서가 '개발팀'이나 '영업팀'인 경우 조회

SELECT name, department, salary
  FROM employees
 WHERE department IN (SELECT department FROM employees WHERE salary >= 5000);


📌 실행 결과

설명: IN (SELECT department FROM employees WHERE salary >= 5000)는 서브쿼리로 연봉이 5000 이상인 부서를 찾고, 그 부서에 속한 직원들을 조회하는 예제야. 서브쿼리 결과를 IN으로 처리해서 조건을 만족하는 데이터들을 쉽게 찾아낼 수 있어.


✅ 2. NOT IN 연산자

NOT IN 연산자는 주어진 값 목록에 포함되지 않는 값을 찾을 때 사용해.
IN과 반대로 특정 값들을 제외한 나머지 값을 조회할 때 유용해!


1) 기본 사용법

📌 이름이 '김철수', '이영희', '박민준'이 아닌 고객 찾기

SELECT name, email
  FROM customers
 WHERE name NOT IN ('김철수', '이영희', '박민준');


📌 실행 결과

설명: NOT IN ('김철수', '이영희', '박민준')은 이름이 '김철수', '이영희', '박민준'이 아닌 고객을 찾는 조건이야.
**NOT IN**을 사용하면 특정 값들을 제외한 다른 값들을 쉽게 필터링할 수 있어.


2) 서브쿼리와 함께 사용

📌 연봉이 5000 이상인 직원들 중에서 '개발팀' 또는 '영업팀'이 아닌 직원 조회

SELECT name, department, salary
  FROM employees
 WHERE department NOT IN (SELECT department FROM employees WHERE salary >= 5000);


📌 실행 결과

설명: NOT IN (SELECT department FROM employees WHERE salary >= 5000)는 연봉이 5000 이상인 부서를 제외한 나머지 부서에 속한 직원들을 조회하는 예제야. 서브쿼리로 제외할 값을 찾고, 그 값을 제외한 나머지를 필터링하는 방법이야.


✅ 3. IN과 NOT IN 사용 시 주의 사항

  • NULL 값 처리: IN이나 NOT IN에서 NULL 값이 포함되면 결과가 예상과 다를 수 있다.
    예를 들어, IN이나 NOT IN에 NULL 값이 있을 경우, 그 결과는 UNKNOWN으로 취급되어 검색되지 않을 수 있음.
    이런 경우에는 **IS NULL**을 추가해서 처리하는 것이 좋다.

✅ 4. 정리