Subquery

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 - 하나 이상의 열을 검색하는 서브쿼리

2.