select * from emp a where not exists ( select 'X' from emp2 b where a.empno=b.empno);
이런식으로 사용할때 당췌 왜 not exists( select 'X'....)가 쓰이는 건지 모르겠습니다.
select * from emp awhere not exists ( select 'X'from emp2 bwhere a.empno=b.empno);
수행 순서를 먼저 보세요.
where절의 exists 문의 구조상 a.empno를 참조하고 있기 때문에 emp 테이블을 선행으로 핸들링하고 나온 데이타에 대해서 건건이 emp2 테이블에서 검증을 수행합니다.
exists는 존재여부를 확인하기 위한것이고 하나라도 존재하면 가부여부만을 리턴합니다.
존재하면 그 값이 컬럼값이던 'X'던 'x'던 'a'던 상관없이 존재한다는 사실을 확인할 뿐이죠.
'X'값은 단순히 저 쿼리를 만들었던 사람이 선호한 상수일뿐입니다.