스캇보다 더많은월급 받는 사원들 삭제
delete from emp
where sal > (select sal
from emp
where ename ='SCOTT');
SCOTT 과 같은 직업을 갖는 사원 삭제, SCOTT 은 제외 하고 삭제하시오
delete from emp
where job = (select job
from emp
where ename = 'SCOTT')
AND ENAME != 'SCOTT';
allen 보다 늦게 입사한 사원들 삭제
delete from emp
where hiredate > (select hireate
from emp
where ename ='ALLEN');
만약 서브쿼리를 이용한 Delete 문을 수행하지 않는다면
쿼리문을 두번 실행하여 데이터를 삭제해야한다.
마지막으로 예시를 들면, 월급이 부서번호의 평균 월급보다 크면 해당사원들을 삭제하는 쿼리를 작성하고 싶다면
delete from emp m
where sal > (seect avg(sal)
from emp s
where s.deptno = m.deptno );
emp 테이블에 별칭을 주는 이유는 조인조건 절 때문인데 해당사원별로 평균월급보다 높은 사원을 지우는 것 이기때문에 메인쿼리 절에서 서브쿼리로와 조인조건절로 간 다음 그에 해당하는 avg(sal) 을 출력하여 결과값을 계산해야하기 때문이다~
emp 테이블을 따로 구분하여 별칭 주지않는다면 조인조건절을 입력 할 수 없다!
'Oracle > SQL' 카테고리의 다른 글
* SQL 계층형 질의문 connect by 절 level 서열을 주어 데이터 출력 (0) | 2021.12.02 |
---|---|
SQL 서브쿼리를 이용한 데이터 합치기 Merge (0) | 2021.12.02 |
SQL 서브쿼리를 이용한 DATA 수정 Update (update 절에 튜닝시 merge 만큼빠름) (0) | 2021.11.30 |
SQL 서브쿼리를 이용한 DATA 입력 Insert (0) | 2021.11.30 |
SQL Select 절에 LOCK 을 거는 For Update (0) | 2021.11.30 |