Select * from 테이블 A
where 필드a in (
Select 필드 a from 테이블 B
where 필드b 조건문
)
() 안에 Select 문을 Subquery 라 한다.
Select * from 테이블 A
where 필드a in (
Select 필드 a from 테이블 B
where 필드b 조건문
)
where 문 사용할 때 안에 Subquery 의 Select 문 필드 이름을 밖에 있는 where 문 필드와 연결 시켜준다는 느낌으로 작성
Select A.필드a ,
A.필드b ,
A.필드c ,
(
select avg(필드) from 테이블
where 필드 = A.필드
)
from 테이블A A
Select 문이 실행될 때 하나하나에 대해서 Subquery 가 실행된다.
Select A.필드 , A.필드, a.필드 from 테이블A A
inner join(
select 필드, avg(필드) from 테이블B B
group by 필드
)a on A.필드 = a.필드
join 테이블 사용할 때 처럼 서브쿼리에도 가상이름을 작성하는걸 잊으면 안된다.
먼저 필요한 정보를 따로 구해보기
목표로 원하는 정보를 먼저 구하고 <모두 따로 구해보기> join 이나 in 으로 이어버리자.
where 절의 Subquery 는 테이블에서 추가조건을 표시하고 싶을 때, 서브쿼리 안 Select 선택이 중요하다.
Select 는 하나하나에 대해서 Subquery 가 실행되니 where 절의 조건식을 필드로 가져와야 한다.
from 의 Subquery는 join 으로 큰 테이블을 만든다 생각하고 테이블의 약어를 붙여주는 것 또한 잊지 말자.