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