서로 같은 키 값(CD, NO)을 가지고 있는 A, B 두개의 테이블들의 중복값을 제거한 전체 집합을 구하려고 합니다.
테이블 A
CD | NO |
A | 01 |
A | 02 |
B | 01 |
B | 02 |
B | 03 |
C | 01 |
C | 02 |
테이블 B
CD | NO |
A | 01 |
A | 02 |
B | 01 |
B | 02 |
C | 01 |
C | 02 |
C | 03 |
제가 생각하는 결과
CD | NO |
A | 01 |
A | 02 |
B | 01 |
B | 02 |
B | 03 |
C | 01 |
C | 02 |
C | 03 |
FULL OUTER JOIN 을 사용하면 될거 같아서 아래와 같이 작성했는데
SELECT A.CD, A.NO
FROM A FULL OUTER JOIN B
ON A.CD = B.CD
AND A.NO = B.NO
ORDER BY A.CD ASC, A.NO ASC;
결과는
CD | NO |
A | 01 |
A | 02 |
B | 01 |
B | 02 |
B | 03 |
C | 01 |
C | 02 |
NULL | NULL |
이렇게 나오더라구요..
A 테이블에 값이 없어서 CD : C, NO : 03 으로 나와야 할 값이 NULL로 나오는거 같은데,
FULL OUTER JOIN이 아닌 A테이블, B테이블들을 그냥 합쳐 중복값만 제거해야 할까요?
너무 초보적인 질문 같은데 답답해서 문의 드립니다..
-- select * 해보시면 왜 그렇게 나왔는지 아실 수 있을 겁니다. -- null 값이 나온 것에 대한 처리는.. SELECT NVL(A.CD,B.CD) CD, NVL(A.NO,B.NO) NO--한 테이블에 중복값이 있을 수 있다면 distinct 처리 FROM A FULL OUTER JOIN B ON A.CD = B.CD AND A.NO = B.NO ORDER BY CD, NO --a, b테이블에서 중복값 없이 표시하려면 간단하게.. SELECT CD, NO FROM A UNION SELECT CD, NO FROM B ORDER BY CD, NO