안녕하세요.
오늘은 SQL 서브쿼리에서 자주 사용되는 다중 행 연산자 ALL과 ANY에 대해 알아보겠습니다.
SQL ALL & ANY 개념 및 예제
▣ SQL ALL & ANY란?
서브쿼리에서 주로 사용되는 SQL의 다중 행 연산자
- ANY는 조건을 만족하는 값이 하나라도 있다면 결과를 리턴하고 ALL은 모든 조건을 만족하는 값이 있다면 결과를 리턴함.
- 통상적으로 SQL에서 다중 행 연산자는 IN, ALL, ANY(SOME), EXISTS를 지칭함.
연산자 | 내용 |
IN | 메인쿼리의 비교조건이 서브쿼리 결과 중에서 하나라도 일치하면 참 |
ANY, SOME | 메인쿼리의 비교조건이 서브쿼리의 검색결과와 하나 이상 일치하면 참 |
ALL | 메인쿼리의 비교조건이 서브쿼리의 검색결과와 모두 일치하면 참 |
EXISTS | 메인쿼리의 비교조건이 서브쿼리의 결과 중 만족하는 값이 하나라도 존재하면 참 |
※ 과거 IN & EXISTS에 대하여 설명한 적이 있으니 아래 포스팅을 참고하시길 바랍니다.
2021.08.05 - [Programming/SQL] - [MySQL] EXISTS와 IN 사용법 비교하기 (예제)
▣ ALL & ANY 예제
: 예시 데이터 emp
empno | ename | job | sal |
7902 | FORD | ANALYST | 3000 |
7788 | SCOTT | ANALYST | 3000 |
7369 | SMITH | CLERK | 800 |
7900 | JAMES | CLERK | 950 |
7876 | ADAMS | CLERK | 1100 |
7934 | MILLER | CLERK | 1300 |
7782 | CLARK | MANAGER | 2450 |
7698 | BLAKE | MANAGER | 2850 |
7566 | JONES | MANAGER | 2975 |
7839 | KING | PRESIDENT | 5000 |
7654 | MARTIN | SALESMAN | 1250 |
7521 | WARD | SALESMAN | 1250 |
7844 | TURNER | SALESMAN | 1500 |
7499 | ALLEN | SALESMAN | 1600 |
1) ALL 활용하여 직업이 SALESMAN인 사람들보다 높은 봉급의 사람들 찾기
- 육안으로 확인했을 때 SALESMAN 중 최고 봉급은 1600이므로 이보다 높은 봉급의 사람들만 조회됨.
SELECT ename, job, sal FROM emp
WHERE sal > ALL(
SELECT sal FROM emp WHERE job = 'SALESMAN'
);
: 결과 보기
ename | job | sal |
FORD | ANALYST | 3000 |
SCOTT | ANALYST | 3000 |
CLARK | MANAGER | 2450 |
BLAKE | MANAGER | 2850 |
JONES | MANAGER | 2975 |
KING | PRESIDENT | 5000 |
2) ANY 활용하여 직업이 MANAGER인 사람들보다 높은 봉급의 사람들 찾기
- 직업이 MANAGER 중 최대 봉급인 2975보다 낮은 사람들만 조회됨.
SELECT ename, job, sal FROM emp
WHERE sal < ANY(
SELECT sal FROM emp WHERE job = 'MANAGER'
);
: 결과 보기
ename | job | sal |
SMITH | CLERK | 800 |
JAMES | CLERK | 950 |
ADAMS | CLERK | 1100 |
MILLER | CLERK | 1300 |
CLARK | MANAGER | 2450 |
BLAKE | MANAGER | 2850 |
MARTIN | SALESMAN | 1250 |
WARD | SALESMAN | 1250 |
TURNER | SALESMAN | 1500 |
ALLEN | SALESMAN | 1600 |
반응형
'Programming > SQL' 카테고리의 다른 글
[SQL] PIVOT & UNPIVOT 함수와 예제 (3) | 2023.07.05 |
---|---|
[SQL] 그룹 소계 함수 및 예제 (ROLLUP, CUBE) (1) | 2023.07.02 |
[SQL] VIEW 쿼리 내용 확인하기 (4) | 2023.06.29 |
[SQL] NTILE 사용법 및 예제 (0) | 2023.06.28 |
[SQL] 교집합 & 차집합 (INTERSECT, MINUS) (1) | 2023.02.17 |
댓글