스칼라 서브쿼리, 인라인 뷰 서브쿼리, 중첩 서브쿼리가 있는데
사용 위치에 따라서 부르는 이름이 다른 것뿐이다. 

1. 스칼라 서브쿼리는 SELECT 절에 위치한다.
SELECT 절은 원래 출력할 컬럼을 선택하기 위해서 존재한다. 

정확히 하나의 값. 단일 컬럼의 단일행을 반환한다. 만약 서브쿼리가 여러 행을 반환하면, 어떤 값을 선택할지 불확실해지기 때문에 오류가 발생함. 


2. 인라인뷰 서브쿼리는 FROM 절에 위치한다. 

FROM절은 원래 어떤 테이블에서 데이터를 가져온다는 것을 명시하기 위해서 존재한다. 
그래서 FROM 절에 오는 서브쿼리는 반드시 하나의 테이블로 리턴되어야 한다. VIEW와 사용하는 방식은 동일하다. VIEW는 데이터베이스에 정의되는 반면 서브쿼리는 서브쿼리가 실행될 때 정의된다는 차이점이 있다. 

 


3. 중첩(NESTED) 서브쿼리는 WHERE이나 HAVING 절에 위치한다. 

WHERE절은 원래 결과 집합을 특정한 조건을 가진 행으로 한정하기 위해서 사용한다.
HAVING은 GROUP BY의 WHERE...
그래서 WHRER 절 뒤에 오는 중첩 서브쿼리는 메인 쿼리 컬럼을 참조한다. 다중컬럼 또는 다중행을 반환할 수 있다. 

+ Recent posts