[Oracle] 오라클 ANY, SOME, ALL 연산자 사용법 완벽 정리

오라클의 ANY, SOME, ALL 연산자는 실무에서 자주 사용은 안하지만, 사용법이 궁금해서 찾아보면 사용법이 생각보다 어렵고 어떤 상황의 쿼리문에서 사용해야 할지 머릿속에 그려지지 않는다.

 

SOMEANY이름만 다를뿐 동일한 기능의 연산자이며 아래의 예제는 ANY로만 작성하였다.

 

ANY(SOME), ALL은 주로 서브쿼리와 함께 사용하는 다중 행 연산자이며, ANY는 조건을 만족하는 값이 하나라도 있으면 결과를 리턴하고, ALL은 모든 값이 조건을 만족해야 결과를 리턴한다.

 

● ANY 조건 예시 (만족하는 값 하나만 있으면 됨)

조건 결과 설명
 1000 > ANY (500, 1000, 2000) TRUE  ANY 값에 1000 보다 작은 500이 있으므로 TRUE
 1000 = ANY (500, 1000, 2000) TRUE  ANY 값에 같은 값 1000이 있으므로 TRUE
 2000 < ANY (500, 1000, 2000) FALSE  ANY 값에 2000 보다 큰 값이 없으므로 FALSE

 

 = ANY   하나라도 만족하는 값이 있으면 결과를 리턴 (IN과 동일)
 > ANY   값들 중 최소값 보다 크면 결과를 리턴
 >= ANY   값들 중 최소값 보다 크거나 같으면 결과를 리턴
 < ANY   값들 중 최대값 보다 작으면 결과를 리턴
 <= ANY   값들 중 최대값 보다 작거나 같으면 결과를 리턴
 <> ANY   모든 값들 중 다른 값만 리턴 (값이 하나일 때만 가능, 사용X)

 

 ALL 조건 예시 (모든 값을 만족해야 함)

조건 결과 설명
 1000 > ALL (500, 1000, 2000) FALSE  1000이 ALL의 모든 값 보다 커야하므로 FALSE
 1000 = ALL (500, 1000, 2000) FALSE  1000이 ALL의 모든 값과 동일해야 하므로 FALSE
 3000 > ALL (500, 1000, 2000) TRUE  3000은 ALL의 모든 값 보다 크므로 TRUE

 

 > ALL   값들 중 최대값 보다 크면 결과를 리턴
 >= ALL   값들 중 최대값 보다 크거나 같으면 결과를 리턴
 < ALL   값들 중 최소값 보다 작으면 결과를 리턴
 <= ALL   값들 중 최소값 보다 작거나 같으면 결과를 리턴
 = ALL   모든 값들과 같아야 결과를 리턴 (값이 하나일 때만 가능, 사용X)
 <> ALL   모든 값들과 다르면 결과를 리턴

 

예제쿼리(테이블포함).txt
0.01MB

 

 

ANY 연산자 예제 쿼리

 

ANY의 값과 동일한 데이터만 조회된다

 

-  ANY 최소값(1000) 보다 큰 데이터만 조회된다

 

-  ANY 최소값(1000) 보다 크거나 같은 데이터만 조회된다

 

-  ANY의 최대값(3000) 보다 작은 데이터만 조회된다

 

ANY의 최대값(3000) 보다 작거나 같은 데이터만 조회된다

 

-  ANY의 값들 중 모두 일치하지 않는 데이터만 조회된다

-  ANY의 값이 2개 이상인 경우 해당 조건은 의미가 없고, 모든 데이터가 조회 된다

 

-  ANY의 값은 서브쿼리로 조회하여 사용할 수 있다

 

 

ALL 연산자 예제 쿼리

 

ALL의 최대값(3000) 보다 큰 데이터만 조회된다

 

 ALL의 최대값(3000) 보다 크거나 같은 데이터만 조회된다

 

ALL의 최소값(1000) 보다 작은 데이터만 조회된다

 

 ALL의 최소값(1000) 보다 작거나 같은 데이터만 조회된다

 

-  ALL의 모든 값을 만족해야 데이터가 조회된다

-  ALL의 값이 2개 이상인 경우 조건을 만족할 수 없기 때문에 사용할 수 없다

 

-  ALL의 모든 값과 일치하지 않는 데이터만 조회된다

 

ALL의 값은 서브쿼리로 조회하여 사용할 수 있다

 

댓글

Designed by JB FACTORY