본문 바로가기

DataBase/MSSQL

[MSSQL] 두테이블간 교집합(INTERSECT) 차집합(EXCEPT) 찾기

1. INTERSECT

 

- SELECT * FROM TableA INTERSET SELECT * FROM TableB

  ( TableA 와 TableB 가 일치하는 결과를 리턴 )

- 교집합 개념

 

2. EXCEPT

 

- SELECT * FROM TableA EXCEPT SELECT * FROM TableB

  ( TableA  Row 내용 중 TableB와 Row 내용이 같지 않거나

   TableA 에는 있는데 TableB에는 없는 데이터를 리턴 )

- 차집합 개념

 

3. 주의 사항

 

- TableA 와 TableB 의 컬럼의 갯수와 순서가 동일해야 함

- 각 상호 비교되는 컬럼들의 데이터 형식이 호환되어야 함

 


예제:

//테이블간 컬럼이 모두 동일하지 않은경우 SubQuery 사용하여 조회가능
//차집합
SELECT *  
FROM Reservation 
WHERE seqnum IN (
	SELECT seqnum fROM Reservation WHERE useYN = 'Y'
	EXCEPT																		
	SELECT reserv_seqnum fROM ReservDetail WHERE useYN = 'Y'
)

//교집합
SELECT *  
FROM Reservation 
WHERE seqnum IN (
	SELECT seqnum fROM Reservation WHERE useYN = 'Y'
	INTERSECT																		
	SELECT reserv_seqnum fROM ReservDetail WHERE useYN = 'Y'
)