데이터 분석/SQL

[쉽게 쓴 SQL] EXCEPT

참치바나나 2020. 11. 8. 17:39

[연산] 집합 두 개 중에 1개에만 해당되는 내용을 보고 싶을 때

 

엄청나게 많이 쓰인다!

 

재고가 있는 film_id 와 이름을 추출하려면?

SELECT 
	DISTINCT f2.film_id,f2.title 
FROM 
	film f2 ,
	inventory i2 
WHERE 
	f2.film_id = i2.film_id
ORDER BY f2.film_id ;

958개의 결과가 있음

재고가 없는 film_id 와 이름을 추출하고 싶다

전체 필름 중에서 재고가 있는 것을 빼면 된다. 

'재고'라는 column이 있는 것이 아니므로, OUTER JOIN으로 '재고' IS NULL은 불가.

SELECT
	f3.film_id,
	f3.title
FROM
	film f3
EXCEPT
SELECT
	DISTINCT f2.film_id,
	f2.title
FROM
	film f2 ,
	inventory i2
WHERE
	f2.film_id = i2.film_id
ORDER BY
	film_id ;