DB/Oracle
[ORACLE] EXISTS/NOT EXISTS
Plone
2020. 11. 18. 16:45
#EXISTS/NOT EXISTS
함수이기 때문에 WHERE, ON같은 조건절에 EXISTS() 같은 형태로 작성한다
서브 쿼리 내 값이 존재하면 TRUE를 반환하고
서브 쿼리 내 값이 존재하지 않으면 FALSE를 반환한다
FALSE가 반환되면 메인 쿼리의 SELECT는 NULL이 출력된다
#EXISTS
서브쿼리 안의 값이 있다면 TRUE를 반환하고 없다면 FALSE를 반환한다
# NOT EXISTS
EXISTS의 반대이다
#WHERE EXISTS
SELECT * -- FALSE면 NULL
FROM
TABLE1 T1
WHERE EXISTS -- 서브쿼리 안의 값이 있다면 TRUE를 반환하고 없다면 FALSE를 반환한다
(SELECT *
FROM
TABLE2 T2
WHERE
T2.BOARDNUM = T1.BOARDNUM
)
#WHERE NOT EXISTS
SELECT * -- TRUE면 NULL
FROM
TABLE1 T1
WHERE NOT EXISTS -- NOT
(SELECT *
FROM
TABLE2 T2
WHERE
T2.BOARDNUM = T1.BOARDNUM
)
#JOIN절에서도 사용이 가능하다
#ON EXISTS
SELECT * -- FALSE면 NULL
FROM
TABLE1 T1
INNER JOIN
TABLE2 T2
ON EXISTS -- 서브쿼리 안의 값이 있다면 TRUE를 반환하고 없다면 FALSE를 반환한다
(SELECT *
FROM
TABLE3 T3
WHERE
T3.BOARDNUM = T2.BOARDNUM
)
#ON NOT EXISTS
SELECT * -- TRUE면 NULL
FROM
TABLE1 T1
INNER JOIN
TABLE2 T2
ON NOT EXISTS -- NOT
(SELECT *
FROM
TABLE3 T3
WHERE
T3.BOARDNUM = T2.BOARDNUM
)