관련문제 링크 : 프로그래머스 - 우유와 요거트가 담긴 장바구니
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
※ 문제 요지 : CART_PRODUCTS 테이블에서 'Milk'와 'Yogurt'가 있는 CART_ID를 출력

| 방법 ① : MAX()이용하기 방법 ② : SUM() 이용하기 방법 ③ : EXISTS 이용하기 |
방법 ① : MAX()이용
현 프로그래머스 문제 처럼 단순 데이터가 존재하는지 여부가 중요하다면 가장 유리한 방법이다.
SELECT CART_ID
FROM CART_PRODUCTS
GROUP BY CART_ID
HAVING MAX(NAME = 'Milk') AND MAX(NAME = 'Yogurt');
방법 ② : SUM() 이용
특정 조건의 데이터가 "몇 개"가 존재하는 지를 구할 때 사용한다
방법 ② : EXISTS 이용하기
여러 테이블 간 존재 여부 파악시에 유리하다.
SELECT c1.CART_ID
FROM CART_PRODUCTS c1
WHERE EXISTS (
SELECT 1 FROM CART_PRODUCTS c2
WHERE c2.CART_ID = c1.CART_ID AND c2.NAME = 'Milk'
)
AND EXISTS (
SELECT 1 FROM CART_PRODUCTS c3
WHERE c3.CART_ID = c1.CART_ID AND c3.NAME = 'Yogurt'
);
'SQL' 카테고리의 다른 글
| [MySQL] 윈도우 함수 (0) | 2025.08.27 |
|---|---|
| [MYSQL] 2진법 변환 및 비트 비교(BIT_OR) (0) | 2025.07.27 |
| GROUP BY 후 조건 개수 세기: SUM() vs COUNT() 어떤 걸 써야 할까? (0) | 2025.07.03 |
| [MYSQL] SQL의 논리적 실행 순서 예외(GROUP BY, HAVING) (0) | 2025.07.01 |
| [MYSQL] 날짜를 계산하는 주요 함수 (0) | 2025.07.01 |