Subquery 란?
하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말한다.
- 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.
- 서브쿼리는 메인쿼리의 칼럼 사용 가능
- 메인쿼리는 서브쿼리의 칼럼 사용 불가
query 의 실행이 메인에서 먼저 실행되기 때문에 subquery 가 main query 에 접근이 가능한 것.
Subquery 사용시 주의할 점
- Subquery 는 괄호로 묶어서 사용
- 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능
- subquery 에서는 order by 를 사용 X
Subquery 종류
- 스칼라 서브쿼리 (Scalar Subquery) - SELECT 절에 사용
- 인라인 뷰 (Inline View) - FROM 절에 사용
- 중첩 서브쿼리 (Nested Subquery) - WHERE 절에 사용
Scalar Subquery
SELECT 절에서 사용하는 서브쿼리. 결과는 하나의 행(Row) 이어야 한다.
SELECT column1, (SELECT column2 FROM table2 WHERE condition)
FROM table1
WHERE condition;
Inline View
FROM 절에 사용하는 서브쿼리. 메인쿼리에서는 인라인 뷰에서 조회한 열(Column) 만 사용가능하다.
SELECT a.column, b.column
FROM table1 a, (SELECT column1, column2 FROM table2) b
WHERE condition;
중첩 서브쿼리 (Nested Subquery)
WHERE 절에서 사용하는 서브쿼리.
1. Single Row - 하나의 행을 검색하는 서브쿼리
서브쿼리가 비교연산자( =, >, >=, <, <=, <>, !=)와 사용되는 경우, 서브쿼리의 검색 결과는 한 개 행의 결과값을 가져야 한
다. (두개 이상인 경우 에러)
SELECT column_names
FROM table_name
WHERE column_name = (SELECT column_name FROM table_name WHERE condition)
ORDER BY column_name;
- Multiple Row - 하나 이상의 행을 검색하는 서브쿼리
- Multiple Column - 하나 이상의 열을 검색하는 서브쿼리