30

다중행 서브쿼리: IN, ANY, ALL

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 비상관 서브쿼리

비상관 서브쿼리: 독립적으로 실행

에디터 로딩 중...

상관 서브쿼리: 메인 쿼리 참조

에디터 로딩 중...

의미: "자신의 부서 평균보다 급여가 높은 직원"

상관 서브쿼리는 강력하지만 느릴 수 있다. 각 행마다 서브쿼리가 실행되니까.