DATABASE/SubQuery : SQL안에 또 다른 SQL

03.다중행 서브쿼리 : 실행 결과가 여러개

euncoding-240213 2024. 3. 12. 21:07

다중행 서브쿼리(MULTIPLE-ROW SUBQUERY)는 실행 결과 행이 여러 개로 나오는 서브쿼리.

서브쿼리 결과가 여러 개이므로 단일행 연산자는 사용할 수 없고, 다중행 연산자를 사용해야 메인쿼리와의 비교가 가능.

 

다중행 연산자

1) IN : 메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있으면 반환(=TRUE)한다.

2) SOME, ANY : 메인쿼리의 조건식을 만족하는 서브쿼리의 결과가 하나 이상이면 반환한다.

3) ALL : 메인쿼리의 조건식을 서브쿼리의 결과 모두가 만족하면 반환한다.

4) EXISTS : 서브쿼리의 결과가 존재하면( 즉, 행이 1개 이상이면) 반환한다.

 

IN연산자 

WHERE절과 연산자를 다루면서 소개하였다.

 

ANY연산자 ( = SOME 연산자)

서브쿼리가 반환한 여러 결과 값 중 메인쿼리와 조건식을 사용한 결과가 하나라도 TRUE라면 메인쿼리 조건식을 TRUE로반환하는 연산자. 

< ANY 연산자는 < MAX()와 같은값을 낸다. ( > ANY 는 > MIN()과 같은값을 내겠지요)

 

ALL연산자

서브쿼리의 모든 결과가 조건식에 맞아떨어져야만 메인쿼리의 조건식이 TRUE가 되는 연산자

> ALL 과 >ANY를 비교해보세요 ( 실습 9-15 / 9-11)

 

EXISTS연산자

서브쿼리에 결과 값이 하나 이상 존재하면 조건식이 모두TRUE, 존재하지 않으면 모두FALSE가 되는 연산자

다른 다중행 연산자에 비해 자주 사용하는편은 아니다.

하지만 특정 서브쿼리 결과 값의 존재 유무를 통해 메인쿼리의 데이터 노출 여부를 결정해야 할 때 사용.

존재한다는 정도만 기억해도 된다.