EXISTS 뒤에 서브쿼리가 따라오는 구조로 하나의 행이 리턴되면 메인 쿼리의 조건문은 TRUE를 반환하고,
서브쿼리에서 어떠한 행도 리턴하지 못하면 메인쿼리 조건문은 FALSE를 반환한다.
이때 주의점은 서브쿼리가 NULL를 리턴하더라도 메인쿼리의 조건문 결과는 TRUE이다. (NULL이라는 행을 리턴했기에)
회원 정보가 있는 MEMBER 테이블과 결제 정보가 있는 PAYMENT 테이블이 있다고 가정한다.
전체 회원에서 구매갯수가 10개 이상인 정보를 조회할 때 다음과 같이 EXISTS를 사용할 수 있다.
메인 쿼리에서 MEMBER 테이블의 각 MEMBER_ID마다 서브쿼리 결과가 TRUE 또는 FALSE인지 여부를 조회한다.
SELECT
MEMBER_ID
FROM
MEMBER M
WHERE
EXISTS
(
SELECT
'X'
FROM
PAYMENT P
WHERE
P.MEMBER_ID = M.MEMBER_ID
AND PAY_AMOUNT >= 10
)
;
만약 10개이상 구매한 적이 없는 회원을 조회하고 싶다면 NOT EXISTS를 이용하면 된다.
'⚙️ 개발 > MySQL' 카테고리의 다른 글
MAX (0) | 2024.08.14 |
---|---|
foreach (0) | 2024.05.10 |
ON DUPLICATE KEY UPDATE (0) | 2024.05.10 |
DATE_FORMAT, WEEKDAY (0) | 2024.05.10 |
DATE_ADD, DATE_SUB (0) | 2024.05.09 |