Scalar Subquery
select column1, (select column2 from table 2 where condition)
from table1
where condition;
Select case_number,
(select avg(case_number)
from crime_status
where crime_type like '강도' and status_type like '검거') avg
from crime_status
where police_station like '은평'
and crime_type like '강도' and status_type like '검거';
- 서울은평경찰서의 강도 검거 건수와 서울시 경찰서 전체의 평균 강도 검거 건수를 조회
Inline View
select a.column, b.column
from table a, (select column1, column2 from table 2) b
where condition;
- from 절에 사용하는 서브쿼리
- 메인쿼리에서는 인라인뷰에서 조회한 column만 사용가능
select c.police_station, c.crime_type, c.case_number
from crime_status c,
(select police_station, max(case_number) count
from crime_status
where status_type LIKE '발생'
group by pollice_station) m
where c.police_station = m.police_station
AND c.case_number = m.count;
- 경찰서 별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회
Nested Subquery
Single Row
select column_names
from table_name
where column_name = (select column_name from table_name where condition)
order by column_name;
- 하나의 열을 검색하는 서브쿼리
- 서브쿼리가 비교연산자(=, >, >=, <, <=, <>, !=)와 사용되는 경우
- 서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다.
select name from celeb where name = (select host from snl_show);
select name from celeb wehre name = (select host from snl_show where id=1);
Multiple Row
select column_names
from table_name
where column_name IN (select column_name from table_name where condition)
order by column_names;
- 하나 이상의 행을 검색하는 서브쿼리
- IN, Exsists, ANY, ALL 등 과 함께 쓰일 수 있다.
select host from snl_show
where host in (select name from celeb where job_title like '%영화배우%');
select name
from police_station p
where exists (select police_station from crime_status c
where p.name = c.reference and case_number > 2000);
- 범죄 검거 혹은 발생 건수가 2000건 보다 큰 경찰서 조회
Multi Column Subquery
select column_names
from tablename a
where (a.column1, a.column2,....)
IN (select b.column1, b.column2, ... from tablename b
where a.column_name = b.column_name)
order by column_names;
select name, sex, agency
from celeb
where (sex, agency)
IN (select sex, agency from celeb where name = '강동원');
- 강동원과 성별, 소속사가 같은 연예인의 이름, 성별, 소속사를 조회