서브 쿼리 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로 돌아올겠습니다~
'SQL' 카테고리의 다른 글
ORACLE | SQL제약조건(데이터 정제하기) (0) | 2018.04.10 |
---|---|
ORACLE | MERGE문 (DML) (0) | 2018.04.09 |
ORACLE | 서브쿼리 1탄 - SINGLE / MULTI ROW SUBQUERY & EXISTS (0) | 2018.04.06 |
ORACLE | UNION(집합연산자) & 레포팅 함수 (0) | 2018.04.05 |
ORACLE | 3개의 tables를 조인하는 방법! (1) | 2018.04.04 |