EXISTS()
SELECT *
FROM EXAMPLE E1
WHERE EXISTS (SELECT * FROM EXAMPLE2 E2 WHERE E1.NAME=E2.NAME);
- 논리연산자 중의 하나로 후행 조건절로 서브 쿼리 형태만 올 수 있음
- 서브 쿼리의 결과가 "한 건이라도 존재하면" TRUE 없으면 FALSE를 리턴
- NULL에 대해 TRUE 리턴
- 처리순서: 메인쿼리 => 서브쿼리
- 서브쿼리의 결과가 존재하는지 여부만을 확인
IN()
SELECT *
FROM EXAMPLE E1
WHERE E1.NAME IN (SELECT * FROM EXAMPLE2 E2 WHERE E1.NAME=E2.NAME);
- ()안에 특정 값이나 서브쿼리가 올 수 있음
- 처리순서: 서브쿼리 => 메인쿼리
- NULL에 대해 FALSE 리턴
- 서브쿼리의 결과에 포함된 값과 메인 쿼리의 조건에 일치하는 값을 선택
"EXISTS"가 서브쿼리의 결과를 일일히 비교하지 않고 빠르게 존재 여부만을 확인할 수 있어, 일반적으로 성능 면에서 더 효율적일 수 있습니다.
'업무' 카테고리의 다른 글
[MyBatis] 설정파일 (0) | 2024.01.22 |
---|---|
[ORACLE 함수] SUBSTR (0) | 2024.01.19 |
[ORACLE 함수] SYSDATE (1) | 2024.01.18 |
[ORACLE 함수] DECODE / CASE (0) | 2024.01.18 |
[ORACLE 함수] MERGE INTO (2) | 2024.01.18 |