Base/Database

[Database] Subquery(단일,다중) 사용법

반응형

Subquery

서브 쿼리란 하나의 쿼리가 다른 쿼리에 포함되는 구조로서

다른 쿼리에 포함된 내부 쿼리는 외부 쿼리에 사용 될 값을 반환하는 역할을 한다.

서브쿼리는 메인쿼리에게 데이터를 넘겨주는 것 이다.

SELECT

FROM

WHERE expr operator( SELECT ...

                                     FROM ...

                                     WHERE  ...  ) ; 

식의 구문으로 이루어진다.

 

Subquery의 유형은 총 4개다

단일(행) - 단일열 / 다중열 

다중(행) - 단일열 / 다중열 

 

으로 나뉜다. 여기서 열은 행열 할때 열이다. 단일 다중은 행을 나타낸다.

단일 행일 경우 비교 연산자(=, > ,>= ,<= , <>)를 사용한다.

다중일 경우에는 (IN, ANY,ALL)을 사용한다.

 

Subquery - 단일 행 서브쿼리 

서브쿼리에 대한 결과 값이 단일 행 (단 하나의 행)으로 나오는 쿼리

 

 

다양한 예제

 

 

 

 

Subquery - 다중 행 서브쿼리 

 

다중 서브 쿼리 앞에는 보통 IN / ANY / ON 를 사용한다.

기본적인 비교 연산자를 사용 할 수 없는 이유는 하나의 값이 아니기 때문이다.

그래서 IN / ANY / ON 추가로 사용한다.

NOT IN 에서는 문법상 서브쿼리에서 WHERE조건 절을 통해서 NULL이 아닌 조건만 가져와야 한다.

 

IN 연산자

여기서 주의 할점은 NOT IN은 서브쿼리에서 하나라도 널이 있으면 널로 출력한다.

 

이 UNION을 CASE WHEN 으로 나타내면

 

 

ANY 연산자

< ANY : 비교 대상 중 최대 값 보다 작음

> ANY : 비교 대상 중 최소 값 보다 큼

= ANY : IN 연산자와 동일

 

ALL 연산자는

< ALL: 비교 대상 중 최소 값 보다도 작음

> ALL: 비교 대상 중 최대 값 보다도 큼

= ALL: IN 연산자와 동일

 

 

 

 

다중행에 다중열 서브쿼리

다중열일 경우는 where 에서도 다중으로 받아줘야 한다.

 

 

반응형