https://school.programmers.co.kr/learn/courses/30/lessons/62284#qna
SELECT CART_ID
FROM CART_PRODUCTS
GROUP BY CART_ID
HAVING EXISTS (SELECT * FROM CART_PRODUCTS WHERE NAME = 'Milk')
AND EXISTS (SELECT * FROM CART_PRODUCTS WHERE NAME = 'Yogurt')
ORDER BY CART_ID
1. 그룹화 하더라도 EXISTS는 모든 테이블에 대해 수행할 것이므로 수정해야 했다.
2. SELECT문에 * 대신 COUNT(*)을 쓴다면 이는 COUNT가 0이어도 EXISTS TRUE 처리 됨에 주의해야 한다.
3. 굳이 그룹화할 필요가 없었다. DISTINCT로 수정했다.
SELECT DISTINCT CART_ID
FROM CART_PRODUCTS A
HAVING EXISTS (SELECT * FROM CART_PRODUCTS WHERE NAME = 'Milk' AND CART_ID = A.CART_ID)
AND EXISTS (SELECT * FROM CART_PRODUCTS WHERE NAME = 'Yogurt' AND CART_ID = A.CART_ID)
ORDER BY CART_ID
'[프로그래머스] SQL > 정답 노트' 카테고리의 다른 글
[lv2] 이름에 el이 들어가는 동물 찾기 (0) | 2024.10.18 |
---|---|
[lv3] 조건별로 분류하여 주문상태 출력하기 (0) | 2024.10.18 |
[lv3] 대장균의 크기에 따라 분류하기 1 (0) | 2024.10.18 |
[lv3] 대장균들의 자식의 수 구하기 (0) | 2024.10.18 |
[lv2] 특정 물고기를 잡은 총 수 구하기 (0) | 2024.10.18 |