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
'SQL' 카테고리의 다른 글
[SQL] (오라클 기준) GROUP BY 확장함수(ROLLUP, CUBE) (0) | 2024.10.01 |
---|---|
[SQL] JOIN + USING (0) | 2024.10.01 |
[SQL] 외부 조인 주의해야할 점 (0) | 2024.09.30 |
[SQL] 조건부 표현식 CASE, DECODE(오라클 전용) (2) | 2024.09.27 |
[SQL] SQL의 NULL (1) | 2024.09.26 |