SQL 문제

문제 65. 우유와 요거트가 담긴(난이도 10)(집합 연산자)

kagan-draca 2024. 7. 30. 17:42

 

처음에 2중 SELECT문으로 어떻게든

풀어볼려고 시도를 했는데

도무지 풀 수가 없었다...

 

다른 사람들의 코드를 찾아보니,

집합 연산자를 활용해 문제를 해결했다.


집합 연산자에는

연산자 의미 결과
UNION 합집합 중복 제거한 결과의 합을 검색
UNION ALL 중복을 포함한 결과의 합을 검색
INTERSECT 교집합 양쪽 모두에서 포함된 행을 검색
  EXCEPT
(Oracle : MINUS)
차집합 첫 번째 검색 결과에서 두 번째 검색 결과를 제외한 너머지를 검색

 

합집합인 UNION, UNION ALL은

 

SELECT 컬럼

FROM 테이블

 

UNION

 

SELECT 컬럼

FROM 테이블

 

로 가능했다.

 

 

 

교집합인 INTERSECT는

 

SELECT 컬럼

FROM 테이블

 

INTERSECT

 

SELECT 컬럼

FROM 테이블

 

로 가능했다.

 

 

 

차집합인 EXCEPT(or MINUS)은

 

SELECT 컬럼

FROM 테이블

 

EXCEPT(or MINUS)

 

SELECT 컬럼

FROM 테이블

 

로 가능했다.

 

기존에 배운 JOIN집합 연산자다른 개념으로

집합 연산자는 주로 두 개 이상의 쿼리 결과를 결합하는 데 사용되고,

JOIN은 테이블 간의 관계를 통해 데이터를 결합하는 데 사용됩니다.

 

제출한 코드 : 

 

SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Milk'
INTERSECT
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Yogurt'
ORDER BY CART_ID ASC