- 서브쿼리 :
하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문을 말한다. 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.
• 서브쿼리는 메인쿼리의 칼럼 사용 가능
• 메인쿼리는 서브쿼리의 칼럼 사용 불가
• Subquery 는 괄호로 묶어서 사용
• 단일행혹은복수행비교연산자와함께사용가능
• subquery 에서는 order by 를 사용X
- 서브쿼리 종류 :
1) 스카라 서브쿼리 (Scalar Subquery) - SELECT 절에 사용
2) 인라인 뷰 (Inline View) - FROM 절에 사용
3) 중첩 서브쿼리 (Nested Subquery) - WHERE 절에 사용
SELECT 절에서 사용하는 서브쿼리. 결과는 하나의 Column 이어야 한다.
ex) 서울은평경찰서의 강도 검거 건수와 서울시 경찰서 전체의 평균 강도 검거 건수를 조회
FROM 절에 사용하는 서브쿼리. 메인쿼리에서는 인라인 뷰에서 조회한 Column 만 사용가능하다.
ex) 경찰서 별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회
WHERE 절에서 사용하는 서브쿼리
1) Single Row - 하나의 열을 검색하는 서브쿼리
2) Multiple Row - 하나 이상의 열을 검색하는 서브쿼리
3) Multiple Column - 하나 이상의 행을 검색하는 서브쿼리
1️⃣ Single Row Subquery
서브쿼리가 비교연산자( =, >, >=, <, <=, <>, !=)와 사용되는 경우, 서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다. (두 개 이상인 경우 에러, 괄호가 없으면 에러)
2️⃣ Multiple Row
- 서브쿼리 결과 중에 포함 될때 - IN
- 서브쿼리 결과에 값이 있으면 반환 - EXISTS
- 서브쿼리 결과 중에 최소한 하나라도 만족하면 (비교연산자 사용) - ANY
- 서브쿼리 결과를 모두 만족하면 (비교 연산자 사용) - ALL
ex) SNL 에 출연한 영화배우를 조회 - IN
ex) 범죄 검거 혹은 발생 건수가 2000건 보다 큰 경찰서 조회 - EXISTS
ex) SNL 에 출연한 적이 있는 연예인 이름 조회 - ANY
ex) 서브쿼리 결과를 모두 만족하면 (비교 연산자 사용) - ALL
3️⃣ Multi Column Subquery
- 서브쿼리 내에 메인쿼리 컬럼이 같이 사용되는 경우
ex) 강동원과 성별, 소속사가 같은 연예인의 이름, 성별, 소속사를 조회
츨처:제로베이스