PostgreSQL ANY연산자를 사용하여 스칼라 값을 하위 쿼리에서 반환된 값 집합과 비교하는 방법

 

PostgreSQL ANY연산자는 값을 하위 쿼리에서 반환된 값 집합과 비교합니다.

expresion operator ANY(subquery)
  • 하위 쿼리는 정확히 하나의 열을 반환해야합니다.
  • ANY연산자는 다음 비교 연산자 =, <=,>, <>와 <> 중 하나가 선행되어야합니다. 
  • ANY서브 쿼리의 값이 조건을 충족하는 경우 운영자는, 그렇지 않으면 false를 반환 true를 돌려줍니다.

 


반응형

 

1) ANY 예

-- 영화의 최대 길이 반환하는 쿼리
SELECT
    MAX( length )
FROM
    film
INNER JOIN film_category
        USING(film_id)
GROUP BY
    category_id;

 

-- 길이가 영화 카테고리의 최대 길이보다 크거나 같은 영화를 찾는 쿼리
SELECT title
FROM film
WHERE length >= ANY(
    SELECT MAX( length )
    FROM film
    INNER JOIN film_category USING(film_id)
    GROUP BY  category_id );

 

-- Action혹은 Drama를 가져오는 쿼리
SELECT
    title,
    category_id
FROM
    film
INNER JOIN film_category
        USING(film_id)
WHERE
    category_id = ANY(
        SELECT
            category_id
        FROM
            category
        WHERE
            NAME = 'Action'
            OR NAME = 'Drama'
    );

 

2) ANY IN 사용

SELECT
    title,
    category_id
FROM
    film
INNER JOIN film_category
        USING(film_id)
WHERE
    category_id IN(
        SELECT
            category_id
        FROM
            category
        WHERE
            NAME = 'Action'
            OR NAME = 'Drama'
    );

NOT IN

x <> ANY (a,b,c)

x <> a OR <> b OR x <> c

반응형

'SW ENGINEERING > Postgres' 카테고리의 다른 글

[PostgreSQL] BASIC - CTE  (0) 2021.09.03
[PostgreSQL] BASIC - ALL  (0) 2021.09.03
[PostgreSQL] BASIC - Subquery  (0) 2021.09.03
[PostgreSQL] BASIC - ROLLUP  (0) 2021.09.03
[PostgreSQL] BASIC - CUBE  (0) 2021.09.03
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기