30분
다중행 서브쿼리: IN, ANY, ALL
Day 4: 쿼리 안의 쿼리
다중행 서브쿼리: IN, ANY, ALL
SQL 기초 2: JOIN, GROUP BY, 서브쿼리 > Day 4: 쿼리 안의 쿼리
학습 목표
IN, ANY, ALL의 사용법을 익힌다 EXISTS로 존재 여부를 확인할 수 있다 상관 서브쿼리를 이해한다
다중행 서브쿼리
여러 행을 반환하는 서브쿼리. =, > 같은 단순 비교는 불가. 특별한 연산자가 필요하다.
IN: 목록에 있는가?
에디터 로딩 중...
서브쿼리가 여러 값을 반환:
에디터 로딩 중...
IN은 이 목록에 있는지 확인한다.
반대: NOT IN
에디터 로딩 중...
ANY / SOME: 하나라도 만족
에디터 로딩 중...
개발팀 급여: 4,800,000 / 5,000,000 / 5,500,000 / 6,000,000
> ANY는 이 중 하나만 넘으면 된다.
즉, 4,800,000보다 크면 조건 충족!
ALL: 모두 만족
에디터 로딩 중...
> ALL은 모두 넘어야 한다.
즉, 6,000,000보다 커야 조건 충족!
개발팀 최고 급여가 6,000,000이니까 아무도 해당 안 될 수도 있다.
EXISTS: 존재하는가?
값이 아닌 존재 여부만 확인한다.
에디터 로딩 중...
EXISTS는 서브쿼리 결과가 하나라도 있으면 TRUE. 무엇을 SELECT하든 상관없다 (보통 SELECT 1).
상관 서브쿼리 vs 비상관 서브쿼리
비상관 서브쿼리: 독립적으로 실행
에디터 로딩 중...
상관 서브쿼리: 메인 쿼리 참조
에디터 로딩 중...
의미: "자신의 부서 평균보다 급여가 높은 직원"
상관 서브쿼리는 강력하지만 느릴 수 있다. 각 행마다 서브쿼리가 실행되니까.