서브쿼리?

하나의 SQL 문 안에 포함된 또 다른 SQL , 메인쿼리 실행 전 1번 실행된다

SELECT / FROM / WHERE / HAVING 등에 사용되며

비교 연산 시 반드시 오른쪽에 쓰고 , 괄호 안에 쓰며 개수와 자료형을 일치시킨다

유형

1. 단일행 : 서브쿼리 결과값이 1개이며 앞에 비교연산자 가능( > < = ...)

2. 다중행 : 서브쿼리 조회 결과값이 여러행으로 나오며 비교연산자를 쓸 수 없다

                                    

  --그러므로 다음을 사용한다.

  • IN / NOT IN :  한개라도 일치하는 것이 존재
  • >ANY , <ANY : 여러 결과보다 하나라도 크다, 작다
    • 가장 작은것보다 크다 / 가장 큰값보다 작다 를 의미한다
  • >ALL, <ALL : 모든 값보다 크다 ,작다 의미
  • (NOT) EXISTS : 값이 존재 하는지 아닌지 여부

3. 다중열 : 서브쿼리 컬럼수가 여러개이다.

 

    비교 컬럼을 동일하게 서브쿼리를 작성해야 한다

     ->( 1 ,  2 )  IN ( SELECT  1  ,  2  FROM ~~~) 

4. 다중행 다중열 : 서브쿼리 개수, 행이 여러개다

5. 상관쿼리 :

  메인 쿼리의 값이 바뀌면 서브쿼리에도 영향을 줘 바뀌는 상호 연관 쿼리이다.

6. 스칼라쿼리 : 상관쿼리 중 결과 값이 1개인 서브쿼리

7. 인라인 뷰 : FROM 절에 사용하는 경우로 서브쿼리 결과를 테이블로 사용

   TOP-N분석에 사용할 수 있다 (ROWNUM OR RANK() OVER / DENSE_RANK() )

  * WITH 로 서브쿼리에 별칭을 주고 따로 사용할 수 있다

   - WITH (별칭 ) AS (서브쿼리) 

     SELECT ~ FROM (별칭) ;

 

 

+ Recent posts