아귀
52
2018-04-03 18:17:32 작성 2018-04-03 18:33:54 수정됨
2
529

[질문]Oracle의 subquery exists문 중에 이해 안되는 것이 있어서 질문올립니다!


안녕하세요 WIndow 환경,oracle 11g,sql developer 으로 현재 학습하고 26살 교육생입니다!


SELECT ename,sal,deptno
    FROM emp E
    WHERE exists(SELECT DISTINCT deptno
                    FROM emp
                    WHERE deptno=E.deptno AND sal>=3000);

 이 쿼리문 중 WHERE deptno=E.deptno 이 부분이 이해가 안되서요!

exists는 테이블의 결과 데이터값이 '존재하냐 안하냐'이냐만 구분해주는 역할을 하는 걸로 알고 있습니다.

그래서 E.deptno 대신에 10을 입력하고 출력하면 emp E 테이블의 ename~deptno 컬럼들의 모든

행들이 다 출력이 됩니다.이유는 exists문이 '결과 데이터값이 존재한다' 라고 했기때문에  서브쿼리를 제외하고 다음 순서로  메인 쿼리가 다 실행 된걸로 이해했습니다.

여기서,제가 exists 문을 재대로 이해하고 있는지 궁금합니다-궁금증 1번

제가 재대로 이해하고 있는게 맞다면,

WHERE deptno=E.deptno로 하더라도 exists에 감싸져 있기 때문에 어떤 값이 되더라도

'존재하냐,존재하지 않냐 '판별되고 결국 10을 넣든 20을 넣든 E.deptno 이 되든 결과는 똑같이 출력되어야 하는게 아닌가 하는 궁금증 2번입니다.

강사님께서는 exists문엔 join이 같이 온다고 생각하면 된다고 알려주셨어요.

그 외에도 뭐라고 말씀해주셨는데,이해가 안되서 고수님께 질문올립니다.

혹시 제가 질문의 의도를 정확하게 기술을 못하고 있다면 지적 바랍니다!

감사합니다.


0
0
  • 답변 2

  • 아귀
    52
    2018-04-04 09:58:25

    루아이/exists문의 이해에 도움이 많이 됬습니다.감사합니다

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.