본문 바로가기
Programming/SQL

[SQL] 다중 행 연산자 ALL & ANY

by 코딩하는 금융인 2023. 6. 30.

안녕하세요.

오늘은 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 사용법 비교하기 (예제)

 

[MySQL] EXISTS와 IN 사용법 비교하기 (예제)

안녕하세요. 오늘은 WHERE절에서 데이터를 걸러낼 때 자주 사용되는 EXISTS와 IN에 대한 사용법에 대해 알아보겠습니다. SQL에서 EXISTS와 IN은 WHERE절에서 사용되며 조건에 따라 데이터를 걸러내어 결

codingspooning.tistory.com

 

▣ 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
반응형

댓글