우당탕탕 개발일기

두 쿼리 결과 비교하는 방법 : EXCEPT, NOT IN 본문

What I Learned/SQL

두 쿼리 결과 비교하는 방법 : EXCEPT, NOT IN

rilee 2023. 7. 28. 14:44
728x90

EXCEPT

SELECT DISTINCT SuhumNo 
FROM z2023_SubjectScore SS
INNER JOIN tbDocuMaster DM ON DM.IpsiYear = SS.IpsiYear 
                           AND DM.IpsiGubun = SS.IpsiGubun 
                           AND DM.SocialNumber_Hash = SS.SocialNumber_Hash
WHERE GraduateYear > 2022

EXCEPT

-- 두 번째 쿼리
SELECT DISTINCT SuhumNo 
FROM tbDocuMaster 
WHERE GraduateYear > 2022;

첫 번째 쿼리에서 반환된 결과에서 두 번째 쿼리에서 반환된 결과를 제외한 결과를 확인 가능.

만약 이 결과가 비어있다면 두 쿼리의 결과는 같고, 결과가 있다면 두 쿼리가 반환하는 값들이 다른 것을 알 수 있다.

 

NOT IN

-- 첫 번째 쿼리 결과에는 있지만 두 번째 쿼리 결과에는 없는 값 찾기
SELECT DISTINCT SuhumNo 
FROM z2023_SubjectScore SS
INNER JOIN tbDocuMaster DM ON DM.IpsiYear = SS.IpsiYear 
                           AND DM.IpsiGubun = SS.IpsiGubun 
                           AND DM.SocialNumber_Hash = SS.SocialNumber_Hash
WHERE GraduateYear > 2022
AND SuhumNo NOT IN (
    SELECT DISTINCT SuhumNo 
    FROM tbDocuMaster 
    WHERE GraduateYear > 2022
);

-- 두 번째 쿼리 결과에는 있지만 첫 번째 쿼리 결과에는 없는 값 찾기
SELECT DISTINCT SuhumNo 
FROM tbDocuMaster 
WHERE GraduateYear > 2022
AND SuhumNo NOT IN (
    SELECT DISTINCT SuhumNo 
    FROM z2023_SubjectScore SS
    INNER JOIN tbDocuMaster DM ON DM.IpsiYear = SS.IpsiYear 
                               AND DM.IpsiGubun = SS.IpsiGubun 
                               AND DM.SocialNumber_Hash = SS.SocialNumber_Hash
    WHERE GraduateYear > 2022
);

결과 집합 간의 차이를 쉽게 확인할 수 있습니다. 결과가 다르다면 조인 조건 또는 필터링 조건에 의해 결과가 

728x90