본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/SQL

SQL 문법 | 집합연산자 | ANY

by dazwischen 2021. 9. 18. 00:10
반응형

본 포스트에서는 집합연산자 중 하나인 ANY에 대해서 알아본다. ANY 절에 포함된 데이터와 일일이 비교하여 하나라도 TRUE 연산이 있다면 TRUE를 리턴한다.

ANY

SQL 문법 집합 연산자 ANY

01 ANY : 어떤 것이라도 만족하면 된다

ANY는 WHERE 절에서 IN을 사용하는 것과 비슷하다. 다만 차이는 IN은 같은지만을 비교하는데 반해 ANY는 큰지 작은지 등 연산을 할 수 있다. 쿼리를 보면 좀 더 명확히 이해할 수 있다.

SELECT	COL1, COL2
FROM	TABLE
WHERE	COL2 * ANY (VAL1, VAL2, VAL3)
;

WHERE절을 살펴 보면 COL2의 값이 VAL1, VAL2, VAL3과 임의의 연산 *를 만족하면 TRUE 리턴한다. *에는 다양한 연산이 들어 올 수 있다. [ >, <, >=, <=, =]

EXAMPLE

SELECT	NAME, AGE
FROM	MEMBER
WHERE	AGE = ANY (10, 20, 30)
;

위의 예시 쿼리문을 해석하자면 '나이가 10세, 20세, 30세 중 해당하는 회원의 이름과 나이를 알려주세요.' 이다. = ANY는 IN과 똑같은 기능을 갖고 있다.

02 ANY : 서브쿼리와 작성할 때 진정 유용하다

ANY절 안에 서브쿼리를 작성할 때 ANY를 더욱 유용하게 이용할 수 있다. 미리 알 수 없는 데이터 내의 특정값을 추출하고 그 값을 이용해 비교하여 만족하는 데이터를 추출할 때 진가를 발휘한다.

SELECT	COL1, COL2
FROM	TABLE
WHERE	COL2 * ( SELECT MAX(COL3) FROM TABLE2)
;

EXAMPLE

2반에서 가장 키가 큰 학생보다 큰 학생이 1반에 있다면 이름과 키를 알려주세요.

SELECT	NAME, HEIGHT
FROM	CLASS01
WHERE	HEIGHT > ANY ( SELECT MAX(HEIGHT) FROM CALSS02)
;

*위와 같은 비교 연산자를 사용할 경우에는 서브쿼리의 결과가 스칼라 컬럼, 즉 단일 값이어야 한다.

반응형

댓글