본문으로 건너뛰기
실습하기

INTERSECT와 EXCEPT

INTERSECTEXCEPT는 두 개의 SELECT 쿼리 결과를 비교할 수 있게 해 주는 SQL 집합 연산입니다.

  • INTERSECT는 두 결과 집합에 모두 존재하는 행만 반환합니다.
  • EXCEPT는 첫 번째 쿼리에는 있지만 두 번째 쿼리에는 없는 행을 반환합니다.

문법

INTERSECT는 다음과 같이 두 쿼리의 결과를 비교할 때 사용할 수 있습니다.

INTERSECT 문법
SELECT column1, column2
FROM tableA
INTERSECT
SELECT column1, column2
FROM tableB;

EXCEPT의 문법도 유사하지만, 첫 번째 쿼리에는 있고 두 번째 쿼리에는 없는 행을 반환합니다.

EXCEPT 문법
SELECT column1, column2
FROM tableA
EXCEPT
SELECT column1, column2
FROM tableB;

UNION과 마찬가지로, 두 쿼리는 같은 개수의 열을 반환해야 하며 데이터 타입이 호환되어야 합니다.


예시: 코드프렌즈 사용자(2년 비교)

2023년과 2024년의 사용자를 비교해 보겠습니다.

users_2023

user_idname
1지민
2서준
3민서

users_2024

user_idname
1지민
3민서
4하준

INTERSECT 예시

INTERSECT 쿼리
SELECT user_id, name
FROM users_2023
INTERSECT
SELECT user_id, name
FROM users_2024;

결과:

user_idname
1지민
3민서

두 해 모두 활동한 사용자입니다.


EXCEPT 예시

EXCEPT 쿼리
SELECT user_id, name
FROM users_2023
EXCEPT
SELECT user_id, name
FROM users_2024;

결과:

user_idname
2서준

2023년에만 활동했고 2024년에는 돌아오지 않은 사용자입니다.


INTERSECT와 EXCEPT를 사용할 때는 어떠한 경우일까요?

  • 데이터셋 간의 공통 레코드를 찾을 때(INTERSECT)
  • 제거되었거나 누락된 항목을 식별할 때(EXCEPT)
  • 감사, 변경 추적, 멤버십 비교 등에 유용합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!