[ORACLE_SQL]우유와 요거트가 담긴 장바구니

이경영·2023년 6월 16일
0

오라클

목록 보기
18/43


SELECT distinct cart_id
FROM CART_PRODUCTS
WHERE NAME IN ('Milk', 'Yogurt')

처럼 사용하려고 했으나, or이 들어가는 구문이기 때문에
Milk만 있는경우와 Yogurt만 있는 경우 둘다 들어가게된다.

정답

  • 교집합 이용
SELECT CART_ID
  FROM CART_PRODUCTS
 WHERE NAME = 'Milk' 
INTERSECT
SELECT CART_ID
  FROM CART_PRODUCTS
 WHERE NAME = 'Yogurt'
 ORDER BY CART_ID

위와 같은 경우 우유가 들어가는 경우와 요거트가 들어가는 경우의 교집합을 만들어서
둘다 들어가는 경우를 만들수 있다.

  • 서브쿼리 이용
SELECT
    CART_ID
FROM
    CART_PRODUCTS
WHERE CART_ID IN ( SELECT
                        CART_ID
                   FROM
                        CART_PRODUCTS
                   WHERE
                        NAME = 'Milk')
      AND NAME = 'Yogurt'
ORDER BY CART_ID ASC;

서브쿼리로 우유가 들어가는 경우의 id중에서 요거트도 들어가는 경우를 뽑는다.

profile
꾸준히

0개의 댓글