INTERSECT와 EXCEPT
INTERSECT
와 EXCEPT
는 두 개의 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_id | name |
---|---|
1 | 지민 |
2 | 서준 |
3 | 민서 |
users_2024
user_id | name |
---|---|
1 | 지민 |
3 | 민서 |
4 | 하준 |
INTERSECT 예시
INTERSECT 쿼리
SELECT user_id, name
FROM users_2023
INTERSECT
SELECT user_id, name
FROM users_2024;
결과:
user_id | name |
---|---|
1 | 지민 |
3 | 민서 |
두 해 모두 활동한 사용자입니다.
EXCEPT 예시
EXCEPT 쿼리
SELECT user_id, name
FROM users_2023
EXCEPT
SELECT user_id, name
FROM users_2024;
결과:
user_id | name |
---|---|
2 | 서준 |
2023년에만 활동했고 2024년에는 돌아오지 않은 사용자입니다.
INTERSECT와 EXCEPT를 사용할 때는 어떠한 경우일까요?
- 데이터셋 간의 공통 레코드를 찾을 때(
INTERSECT
) - 제거되었거나 누락된 항목을 식별할 때(
EXCEPT
) - 감사, 변경 추적, 멤버십 비교 등에 유용합니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!