SQL

(SQL) 다중 행 SUBQUERY 비교 연산자

스위트치즈 2020. 5. 27. 17:17

1) IN

메인쿼리의 비교 조건이 서브쿼리의 결과 중 하나만 동일하면 참이 됨

 

SELECT ENAME, DNAME, SAL
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.EMPNO
IN (SELECT EMPNO FROM EMP WHERE SAL >2000) /*급여(SAL)가 2000 이상인 사원번호를 조회*/

 

 

2) ALL

메인쿼리와 서브쿼리의 결과가 모두 동일하면 참이 됨

SELECT *
FROM EMP
WHERE DEPTNO <= ALL(20, 30); /*DEPTNO가 20, 30보다 작거나 같은 것을 조회*/

 

3) ANY

메인 쿼리의 비교조건이 서브쿼리의 결과 중 하나 이상 동일하면 참이 됨

SELECT *
FROM EMP
WHERE DEPTNO < ANY(20, 30) ; /*DEPTNO가 20보다 작거나 30보다 작은 것을 조회*/

 

4) EXISTS

메인 쿼리와 서브 쿼리의 결과가 하나라도 존재하면 참이 됨

SELECT ENAME, DNAME, SAL
FROM EMP, DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO
AND EXIST (SELECT 1 FROM EMP WHERE SAL > 2000); /*급여(SAL)가 2000 이상인 사원이 있으면 조회됨*/