서브쿼리란 ? 쿼리 안의 쿼리를 말함/ 조건 2개를 보여줘야할 때 사용
단일행 서브쿼리 : 수행결과가 오직 하나의 로우만 반환하는 서브쿼리
예제)
show user
//scott의 근무 부서는 어디?
//scott은 emp. 근무부서는 dept에 있을때
select deptno,dname from dept
where deptno=(select deptno from emp
where ename='SCOTT');
//scott와 같은 부서에서 근무하는 직원이름 부서는?
select ename, deptno from emp
where deptno=(select deptno from emp where ename='SCOTT');
//s와 동일 직급가진 직원이름은?
select ename,job from emp
where job=(select job from emp where ename='JONES');
//s 급여와 동일하거나 더 많이 받는 사원명, 급여는?
select sal from emp where ename='SCOTT';
select ename,sal from emp
where sal>=(select sal from emp where ename='SCOTT');
다중행 서브쿼리 : 서브쿼리에서 반환되는 행이 하나 이상인 경우
다중행 연산자와 함께 사용해야함
-in : 비교조건이 서브쿼리 결과중 하나라도 일치할 때 참
-any, some : 결과와 하나 이상이 일치하면 참
-all : 모두 일치하면 참
-exist : 만족하는 값이 하나라도 존재하면 참
예제)
//월급이 3000이상인 직원이름, 월급, 부서
select ename,sal,deptno from emp
where sal>=(select distinct sal from emp where sal=3000);
//부서별로 급여를 많이 받는사원
select deptno, max(sal) from emp
group by deptno;
//직급이 매니저인 부서번호, 부서명, 위치
select deptno, dname,loc
from dept
where deptno in (select deptno from emp where job='MANAGER');
//30번 부서 최고 월급자보다 많이 받는 사람
select ename,sal from emp
where sal> (select max(sal) from emp where deptno=30);
'MS SQL' 카테고리의 다른 글
SQLD transaction 관리 (0) | 2021.11.10 |
---|---|
SQL rollup, cube 함수 (0) | 2021.11.10 |
SQL - 트랜잭션 (0) | 2021.11.03 |
SQL 명령어 분류 - DDL, DML, DCL, TCL (0) | 2021.11.03 |
SQL- 그룹함수(group by) (0) | 2021.11.03 |