SAS/SAS 질문과 답변

안녕하세요~ not exist 관련해서 질문드립니다!

이슈카 2016. 2. 21. 12:49

안녕하세요~ 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만 나오는 거 같습니다