본문 바로가기
우당탕탕 개발생활/_Database

[MySQL] EXCEPT 기능 구현하기

by J-2n 2022. 1. 19.

MySQL Version : 5.7
기존 MsSQL 프로젝트을 MySQL로 Porting 작업을 진행하게 된다면 EXCEPT를 언젠가 마주치게 된다.


EXCEPT는 차집합의 개념으로 만약 TableA가 있다면 TableA의 Row 중 TableB의 Row와 같지 않거나 TableA 에는 있는데 TableB에는 없는 데이터를 리턴하는 기능을 한다.

MySQL 에서는 EXCEPT를 지원하지 않기에 똑같이 기능을 하도록 작성할 수 있다.


MsSQL 용 :

SELECT USER_ID
  FROM TABLEA
 WHERE USER_ID = #{UserId}
EXCEPT
SELECT USER_ID
  FROM TABLEB
 WHERE USER_ID = #{UserId}

MySQL 용 : 

SELECT DISTINCT USER_ID
 FROM (
 SELECT USER_ID
 FROM TABLEA
 WHERE USER_ID = #{UserId}
) A
WHERE NOT EXISTS (
SELECT  1
 FROM TABLEB B
WHERE B.USER_ID  = A.USER_ID
)