몇개인지는 안 궁금하고 있는지 없는지만 궁금할 땐 exist 서브쿼리를 쓰면 된다
직원이 일하고 있는 (employees 테이블에 정보가 있는) 부서 정보만 알고 싶다면 이렇게
SELECT *
FROM departments d
WHERE EXISTS (SELECT *
FROM employees
WHERE department_id = d.department_id) ;
반대로 직원이 없는 부서 정보만 알고 싶다면 NOT EXIST를 쓰면 된다.
따지자면 서브쿼리에서 NULL을 반환한 애를 가져오자는 건데 NOT IN은 NULL을 못 쓰니까 NOT EXIST는 NULL이 나와도 상관없으니 이걸 쓰는 것도 좋겠다.
SELECT *
FROM departments d
WHERE NOT EXISTS (SELECT *
FROM employees
WHERE department_id = d.department_id) ;
극단적으로 NULL을 SELECT하자고 써도 제대로 나온다
'근거 있는 일하기_SQL' 카테고리의 다른 글
Select, Order by 절의 서브쿼리 (0) | 2024.05.06 |
---|---|
From 절의 서브쿼리 (Inline view), Top N 질의 (0) | 2024.05.06 |
조건절의 서브쿼리 (where, having) (0) | 2024.05.06 |
OUTER JOIN 쓸 때 ON과 WHERE에 주는 조건 차이 주의 (0) | 2024.05.04 |
JOIN (0) | 2024.04.20 |