select column, (select column from table where condition)
from tablename
where condition
select column
from table a ,(select column1 from table) b
where condition
select c.police_station, c.rime_type, c.case_number
from crime_status c,
(select police_station, max(case_number) count
from crime_status
where status_type like '발생'
group by police_station) m
where c.police_station = m.police_station
and c.case_number = m.count;
e.g)
킹의 연봉보다 많이 보다는 사람을 출력하고싶다!
하지만 킹의 연봉이 변하기 때문에 단지 숫자를 넣는 것보다 조건을 주는 것이 좋다!
select *
from emp
where sal>(select sal from emp where ename='KING');
In
- 서브쿼리 결과 중에 포함될때
EXISTS
- 서브쿼리 결과 값이 있으면 반환
그냥 where 문으로 엮어도 될거 같은데...
Any
- 반환된 다중 행을 조건에 대입하여 하나라도 일치하면 출력하는 연산자
- where sal >950 or sal >1100 or sal >1300
select *
from emp
where
sal > ANY (SELECT MIN(sal)
FROM emp
GROUP BY deptno);
select *
from emp
where
sal > ALL (SELECT MIN(sal)
FROM emp
GROUP BY deptno);
reference : Subquery