PostgreSQL/집합 연산자와 서브쿼리
PostgreSQL EXCEPT 연산
DOGvelopers
2019. 11. 10. 12:44
반응형
EXCEPT 연산 이란?
맨위에 SELECT문의 결과 집합에서 그 아래에 있는 SELECT문의 결과 집합을 제외한 결과를 반환합니다.
LEFT ONLY
기본문법
두개의 SELECT문 간 컬럼의 개수는 동일해야 하고 해당 순서의 열에는 서로 호환되는 데이터 유형 이어야 합니다.
SELECT
COLUMN_1_1,
COLUMN_1_2
FROM
TABLE_NAME_1
EXCEPT
SELECT
COLUMN_2_1,
COLUMN_2_2
FROM
TABLE_NAME_2
ORDER BY ...
실습
- INVENTORY 테이블과 FILM테이블을 FILM_ID 컬럼 기준으로 INNER JOIN 합니다.
SELECT
DISTINCT INVENTORY.FILM_ID,
TITLE
FROM
INVENTORY
INNER JOIN FILM ON
FILM.FILM_ID = INVENTORY.FILM_ID
ORDER BY
TITLE;
재고가 존재하는 영화 ID값이 조회 됩니다.
- 그렇다면 재고가 존재하지 않는 ID값을 조회 할때 EXCEPT를 사용합니다.
SELECT
FILM_ID,
TITLE
FROM
FILM
EXCEPT
SELECT
DISTINCT INVENTORY.FILM_ID,
TITLE
FROM
INVENTORY
INNER JOIN FILM ON
FILM.FILM_ID = INVENTORY.FILM_ID
ORDER BY
TITLE;
1. FILM 테이블의 존재하는 모든 데이터를 조회합니다. -> FILM_ID는 기본값 이기 때문에 중복되지 않습니다.
2. INVENTORY 테이블과 FILM테이블을 INNER JOIN하여 재고가 있는 값을 조회합니다.
3. 모든 데이터 - 재고 데이터 = 재고가 없는데이터 를 조회할 수 있습니다.
4. EXCEPT는 A - B = C 의 값을 조회합니다.
반응형