Database/SQL

ORACLE 테이블 데이터 비교, 교집합 차집합 데이터 추출

리커니 2019. 9. 24. 17:32
반응형

ORACLE 테이블 데이터 비교, 교집합 차집합

 

이번 포스팅은 ORACLE 테이블 데이터 비교가 주제입니다.!

 

같은 포멧의 두 테이블을 비교하거나, SELECT 한 두 SQL문의 데이터를 비교할때 사용됩니다.

 

 

같은 데이터 만 추출하기 (교집합) INTERSECT

SELECT *
  FROM TABLE_A
INTERSECT
SELECT *
  FROM TABLE_B

 

두 테이블 SQL문 사이에 INTERSECT 가 들어가게 됩니다.

두 테이블의 컬럼이 같고, 같은 데이터 포멧이어야 비교가 가능합니다.

 

위 테이블의 결과는 처음 테이블(TABLE_A)의 일치하는 데이터 ROW 가 출력이 됩니다.

 

아래의 예를 보시죠.

SELECT * 
  FROM (
        SELECT '사과'
             , '배'
             , '오랜지'
          FROM SYS.DUAL
        UNION ALL
        SELECT '딸기'
             , '포도'
             , '바나나'
         FROM SYS.DUAL
       )
INTERSECT
SELECT * 
  FROM (
        SELECT '사과'
             , '귤'
             , '오렌지'
          FROM SYS.DUAL
        UNION ALL
        SELECT '딸기'
             , '포도'
             , '바나나'
         FROM SYS.DUAL
       )

 

첫번째 테이블은

'사과, 배, 오렌지'

'딸기, 포도, 바나나'

2 ROW 가 출력되고

 

두번째 테이블은

'사과, 귤, 오렌지'

'딸기, 포도, 바나나'

2 ROW가 출력됩니다.

 

INTERSECT는 교집합이니 '딸기, 포도, 바나나' 1 ROW만 출력이 되겠죠.

 

 

다른 데이터 만 추출하기 (차집합) MINUS

SELECT *
  FROM TABLE_A
MINUS
SELECT *
  FROM TABLE_B

 

INTERSECT와 같은 형태 입니다.

결과는 반대로, 첫번째 테이블(TABLE_A)의 일치하지 않는 데이터만 출력이 됩니다.

 

INTERSECT 와 같은 예를 든다면, 출력은

'사과, 배, 오렌지' 가 되겠죠!

 

 

INTERSECT 와 MINUS 는 데이터 비교에 많이 사용됩니다.

사용법은 간단하니 유용하게 사용하세욧!

 

 

반응형