처음에 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
'SQL 문제' 카테고리의 다른 글
문제 67. 주문량이 많은 아이스크림들(난이도 10)(새 테이블 만들어 조회) (0) | 2024.08.01 |
---|---|
문제 66. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기(난이도 6) (0) | 2024.08.01 |
문제 64. 헤비 유저가 소유한 장소2021(난이도3) (0) | 2024.07.30 |
문제 63. 자동차 평균 대여 기간 구하기(난이도 5) (0) | 2024.07.30 |
문제 62. 자동차 대여 기록에서 장기/단기(난이도 7)(날짜 차이 구하기) (0) | 2024.07.30 |