PostgreSQL 중복 방지(Exists & In)

김무성·2022년 2월 21일
0

SQL

목록 보기
1/7

EXISTS

EXISTS (subquery)
  • EXISTS 연산자는 subquery 가 1튜플(row)이라도 반환되는 경우, 결과가 true 로 반환

Example

  • 고객(customer)중 11보다 더 많은 비용(amount)을 지불한 사람들을 출력
SELECT first_name,
       last_name
FROM customer c
WHERE EXISTS
    (SELECT 1
     FROM payment p
     WHERE p.customer_id = c.customer_id
       AND amount > 11 )
ORDER BY first_name,
         last_name;

NOT EXISTS

  • NOT EXISTS 연산자는 EXISTS 연산자의 반대의 결과를 출력

  • NOT EXISTS 연산자는 subquery 가 1튜플(row)이라도 반환되는 경우, 결과가 false 로 반환됩니다.

Example

  • 고객(customer)중 11미만의 비용(amount)을 지불한 사람들을 출력
SELECT first_name,
       last_name
FROM customer c
WHERE NOT EXISTS
    (SELECT 1
     FROM payment p
     WHERE p.customer_id = c.customer_id
       AND amount > 11 )
ORDER BY first_name,
         last_name;

IN

VALUE IN (value1, value2, ...)
  • IN 연산자는 WHERE 절 내에서 목록에 있는 value들을 확인하는데 사용
VALUE IN ( SELECT value FROM table_nm )
  • IN 다음에 SELECT 문을 넣어도 사용 가능
    value들의 목록이 IN 뒤에 들어가도록만 만들어주면 됩니다.

NOT IN

  • NOT과 IN 을 합쳐 목록에 없는 value 확인

Example

  • 고객의 ID(customer_id)가 1, 2 가 아닌 정보
SELECT
   customer_id,
   rental_id,
   return_date
FROM
   rental
WHERE
   customer_id NOT IN (1, 2);

<> (not equal operator)

  • <> Not equal 연산자와 AND 연산자를 사용하면 위의 예시와 같은 결과를 출력 가능
SELECT
   customer_id,
   rental_id,
   return_date
FROM
   rental
WHERE
   customer_id <> 1
AND customer_id <> 2;

Reference

profile
graph data scientist

0개의 댓글