안녕하세요~ not exist 관련해서 질문드립니다!
안녕하세요~ sas advanced 공부하다가 궁금한점이 있어서 질문드려요~~!
ONE
NUM | COUNTRY |
1 | CANADA |
2 | FRANCE |
3 | GERMANY |
4 | BELGIUM |
5 | JAPAN |
TWO
NUM | CITY |
3 | BERLIN |
5 | TOKYO |
이렇게 두 TABLE이 있을 때,
proc sql;
select country
from one
where not exists (select * from two where one.num=two.num);
quit;
이 실행되면,
country 값이 CANADA, FRANCE, BELGIUM이 나오는데요.
결과론적으로 보면 num=3,5를 제외한 country가 출력이 된 것 같은데..
제가 궁금한 건
not exists 다음에 ( ) 안을 보면
1) two에 있는 num은 one에도 전부 있고
2) two에 있는 모든 변수를 선택했기 때문에
결국 괄호안은 two table 그대로를 뜻한다고 생각을 했거든요.
그래서 one table과 two table에 num=3,5는 같아도, country와 city는 다른 값을 가지고 있기 때문에
where not exists (select * from two where one.num=two.num); 에서 걸러지는 값 없이
결국엔 결과 값이 one table에 있는 모든 country가 나와야 될거라고 생각을 했습니다..ㅜㅜ
제가 어느 부분을 잘못생각하고 있는걸까요..
답변부탁드립니다~~!
================================================================================
where not exists (select * from two where one.num=two.num);
서브 쿼리 two 에서 전부 읽어서 one과 two의 num이 같은 경우가 not exists 한 경우를
One에서 나타내는 거니까 1,2,4만 나오는 거 같습니다