반응형
본 포스트에서는 집합연산자 중 하나인 ANY에 대해서 알아본다. ANY 절에 포함된 데이터와 일일이 비교하여 하나라도 TRUE 연산이 있다면 TRUE를 리턴한다.
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)
;
*위와 같은 비교 연산자를 사용할 경우에는 서브쿼리의 결과가 스칼라 컬럼, 즉 단일 값이어야 한다.
반응형
'ICT > SQL' 카테고리의 다른 글
SQL 문법 | 집합연산자 | EXISTS (0) | 2021.09.20 |
---|---|
SQL 문법 | 집합연산자 | ALL (0) | 2021.09.19 |
SQL 문법 | 데이터 조회 및 필터 | WHERE IN (0) | 2021.09.17 |
SQL 문법 | 데이터 조회 및 필터 | EXCEPT (FEAT. MINUS) (0) | 2021.09.16 |
SQL 문법 | 데이터 조회 및 필터 | INTERSECT (0) | 2021.09.15 |
댓글