반응형


서브 쿼리 1탄 SINGLE / MULTIPLE ROW 서브쿼리 & EXISTS 를 먼저 보고 오시면 좋습니다.


오늘은 2탄 MULTIPLE COLUMN SUBQUERY를 다루도록 하겠습니다.




< 서브쿼리의 종류 >


   

     1. Single row subquery


     2. Multiple row subquery


     3. Multiple column subquery


     4. Exists

 




MULTIPLE COLUMN SUBQUERY


서브쿼리에 쓰여지는 컬럼의 갯수가 2개 이상인 경우에 사용합니다.


[ 오라클에서 지원하는 Multiple Column Subquery 의 종류 ]


    

     1. NUM PAIR WISE 방식


     2. PAIR WISE 방식




<예제를 위해 사용할 테이블>


[ 고객 테이블 ]


고객이름

 나이

  주소

 총구매액

 추천인

 A

 24

 서울

 30000

 null

 B

 29

 파주

 10000

 A

 C

 26

 파주

 25000

 A

 D

 24

 제주

 1000

 B




예제1. A와 나이도 같고 주소도 같은 고객의 이름, 나이, 주소, 총구매액을 알고싶어요



 

      --> num pair wise


         SQL> SELECT 고객이름, 나이, 주소, 총구매액

                        FROM 고객

                        WHERE 나이 IN (SELECT 나이 FROM 고객

                                                         WHERE 고객이름 = 'A')

                              AND   주소 IN (SELECT 주소 FROM 고객

                                                            WHERE 고객이름 = 'A');


      --> pair wise


         SQL> SELECT 고객이름, 나이, 주소, 총구매액

                        FROM 고객

                        WHERE (나이, 주소) IN (SELECT 나이, 주소 FROM 고객

                                                                        WHERE 고객이름 = 'A')




[ NUM PAIR WISE 결과 ]


고객이름 

 나이

 주소

 총구매액

 A

 24

 서울

 30000

 B

 29

 파주

 10000

 C

 26

 파주

 25000

 D

 24

 제주

 1000



[ PAIR WISE 결과 ]


고객이름 

 나이

 주소

 총구매액

 A

 24

 서울

 30000

 B

 29

 파주

 10000



num pair wise 방식의 경우


나이가 24, 29 중 하나인 사람 중 주소가 서울, 파주 중 하나인 사람을 출력합니다.



pair wise 방식의 경우


나이가 24살이면서 서울에 사는 사람이거나 나이가 29이면서 파주에 사는 사람을 출력합니다.



* 참고로 MSSQL은 PAIR WISE방식을 지원하지 않습니다.

(ONLY num pair wise방식만 지원)



오늘은 여기까지!


모두 수고하셨습니다.


다음주에는 DML로 돌아올겠습니다~

반응형

+ Recent posts