본문 바로가기
데이터베이스/SQL

SQL 서브쿼리 - NOT IN

by ADELA_J 2024. 1. 10.

<NOT IN 연산자>

- 특정 쿼리에서 검색한 데이터 중 다른 쿼리에 없는 데이터를 검색하는 방법

 

▼ 자기 밑에 직속 부하 사원이 한 명도 없는 사원들을 출력하는 쿼리

▷ 직속부하가 없는 사원은 EMPNO가 MGR이 아닌 사원들 출력!

 

▶ mgr이 관리자 번호인데, empno 이 없는 사원들을 출력

 

▷ 만약 서브 쿼리문 WHERE절에 mgr is not null을 사용하지 않고 실행한다면?

아무것도 나오지 않는다. 

▶ mgr에 NULL값이 하나라도 있기 때문에. 

서브쿼리에서 메인 쿼리로 NULL 값이 하나라도 리턴되면 결과가 출력되지 않는다.

 

▷ 왜냐면 NOT IN 으로 작성한 서브 쿼리문은 아래와 같기 때문

△ TRUE AND TURE AND TURE AND TURE AND TURE AND TURE AND NULL

이기 때문에 결과는 NULL임.

▶ 전체가 NULL이되어버려서 결과가 출력되지 않음.

 

▶ ▶ NOT IN 사용할 때는 NULL값이 리턴되지 않게 해야하는 것이 중요