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
) - 감사, 변경 추적, 멤버십 비교 등에 유용합니다.
Quiz
0 / 1
첫 번째 쿼리에는 존재하지만 두 번째 쿼리에는 없는 행을 찾으려면 어떤 SQL 연산을 사용하나요?
첫 번째 쿼리에는 존재하지만 두 번째 쿼리에는 없는 행을 찾으려면 연산을 사용합니다.
UNION
INTERSECT
EXCEPT
JOIN
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
코드 실행
코드 생성
DB 테이블 구조
실행 결과