본문 바로가기
Web programming/SQL & DB

집합 연산자로 데이터 레코드를 합하여 출력 (UNION, UNION ALL, INTERSECT, MINUS)

by Skilly 2020. 4. 16.

 

 

UNION
: 두 집합(쿼리문)의 결과를 하나로 합하여 출력 (중복 값 제거하고 정렬) 통합 검색 시 사용

 

UNION ALL
: 두 집합의 결과를 하나로 합하여 출력 (중복 값 제거 안하고 모두 출력, 정렬X)

 

INTERSECT
: 두 집합의 교집합 결과를 정렬하여 출력 (중복 값 제거 ; 두 집합 or 데이터 내 중복 값)

 

MINUS
: 두 집합의 차집합 결과를 정렬하여 출력 (큰 집합에서 작은 집합을 빼야하므로 순서 중요)

 

 

 

UNION / UNION ALL 사용 시 주의!  
두 집합의 SELECT 절에 오는 컬럼의 데이터 타입이 같아야 하고, 럼의 개수가 같아야

 

 

 

사용 :

우선 테이블별로 조회해서 개수를 확인 후, 테이블을 합한 결과를 확인 해보자

SELECT ID, AGE FROM MEMBER;         
-- 43개 
SELECT WRITER_ID, HIT FROM NOTICE; 
-- 64개 


SELECT ID, AGE FROM MEMBER 
UNION  
SELECT WRITER_ID NAME, HIT FROM NOTICE; 

92개
중복된 데이터 제거, 레코드가 합쳐짐  



SELECT ID, AGE FROM MEMBER 
UNION ALL  
SELECT WRITER_ID NAME, HIT FROM NOTICE; 

107개
중복된 데이터까지 모두 보여짐 



SELECT ID, AGE FROM MEMBER
INTERSECT
SELECT WRITER_ID NAME, HIT FROM NOTICE;

교집합 결과 출력




SELECT ID, AGE FROM MEMBER
MINUS
SELECT WRITER_ID NAME, HIT FROM NOTICE;

차집합 결과 출력


 

 

 

 

 

반응형