SQL

[SQL] 서브쿼리의 결과값이 NULL이 될 경우

bornsoon 2024. 9. 30. 17:49
SELECT last_name
FROM employees
WHERE employee_id <> ALL (SELECT manager_id
                          FROM employees);   --(=not in) 
-- 서브쿼리의 결과에 NULL이 포함될 경우 결과가 NULL 또는 FALSE가 될 수 있음
--- not in (null, ...) --> ...!= null and ...--> 결과값 NULL 또는 FALSE (null and false는 false)

SELECT last_name
FROM employees
WHERE employee_id <> ALL (SELECT manager_id
                          FROM employees
                          WHERE manager_id IS NOT NULL);

** NULL에는 어떤 작업을 해도 결과값은 늘 NULL이 나오게 되므로 주의해야한다.

   NULL 값 때문에 의도하지 않은 오류가 발생하는 경우가 빈번하므로 NULL 값의 특징을 잘 알고 있어야 함.

 

==> Null 값을 찾고 싶을 때는 '='연산자를 쓰지 않고 IS NULL,

        Null 값이 아닌 모든 값을 찾고 싶을 때는 IS NOT NULL을 사용해야 한다.

728x90