C. Oracle
oracle 서브쿼리
sfeg
2018. 1. 18. 21:24
- SubQuery
=> 1. 하나의 select문안에 ( ) 를 이용하여 또 다른 select문이 존재하는것
2. single row subquery앞에는 single row operator( =,>....)가 와야한다.
3. multiple row subquery앞에는 multiple row operator( IN... )가 와야한다.
4. subquery내에서는 정렬할 필요가 없다.( order by의 의미가 없다. )
단, 8i R2부터 from절에 사용되는 subquery의 경우에는 사용가능하다.
ps. main Query - SubQuery => SubQuery먼저 만들고 main Query를 만들면 수월하다.
ex) select ename,sal from emp
ex) select ename,sal from emp
where sal >= ( select sal from emp where ename='JONES');
- subquery가 반환하는 값이 몇개냐에 따라 아래와같이 나눌수 있다.
# single row subquery -> 반환값이 하나
# multiple row subquery -> 반환하는 값이 2개이상
# multiple column subquery -> 반환하는 컬럼이 2개이상
SUBQUERY 연산자 (True /False)
>ALL
ex) ...where column >ALL(값1,값2,값3..)
ex) ...where column >ALL(값1,값2,값3..)
column이 값1이보다 크고 AND column이 값2이보다 크고 AND column이 값3이보다 크냐?
<ALL
ex) ...where column <ALL(값1,값2,값3..)
ex) ...where column <ALL(값1,값2,값3..)
column이 값1이보다 작고 AND column이 값2이보다 작고 AND column이 값3이보다 작냐?
>ANY
ex) ...where column >ANY(값1,값2,값3..)
ex) ...where column >ANY(값1,값2,값3..)
column이 값1이보다 크거나 OR column이 값2이보다 크거나 OR column이 값3이보다 크냐?
<ANY
ex) ...where column <ANY(값1,값2,값3..)
ex) ...where column <ANY(값1,값2,값3..)
column이 값1이보다 작거나 OR column이 값2이보다 작거나 OR column이 값3이보다 작냐?