개발 유니버스/_Database
[MySQL] EXCEPT 기능 구현하기
코드유
2022. 1. 19. 15:20
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 ) |