다른 쿼리 결과를 조건이나 값으로 사용합니다.
EXISTS는 서브쿼리가 한 행이라도 반환하는지만 확인하며 상관 서브쿼리에서는 바깥 행마다 조건을 평가합니다. IN과 JOIN으로도 표현할 수 있지만 중복과 NULL 의미를 비교해야 합니다.
존재 여부만 필요하면 JOIN 후 DISTINCT보다 EXISTS가 의도를 잘 드러내고 최적화하기 쉽습니다.
NOT IN 서브쿼리에 NULL이 있으면 UNKNOWN 때문에 기대와 다른 결과가 날 수 있어 NOT EXISTS가 안전한 경우가 많습니다.
서브쿼리와 EXISTS 문법은 SQL 표준이라 SQLite·MariaDB·PostgreSQL에서 동일하게 동작하지만, 실행 계획 최적화 수준은 엔진마다 다를 수 있습니다.
상관 서브쿼리가 큰 테이블에서 반복 평가되지 않도록 실행 계획과 인덱스를 확인하세요.
직접 바꿔보세요paid 주문이 존재하는 고객만 조회하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.