Postgres SELECT WHERE 에서 EXIST / NOT EXIST 에 대해

  • EXIST 의 parameter 로  임의의  select 구문이나 subquery  를 받는다
  • 판단은, param 의 결과가 최소 1개 이상의 row 를 return 하면 TRUE, 아니면 FALSE 이다
  • 최소 하나라도 return 하는지가 중요하므로, 실제  return  결과는 관심이 없다
  • 그래서 판별식 내부는 주로 select 1 이 쓰인다
  • far enough to determine 이라서,  statement 를 끝까지 완료하지 않을 수 있다(1개 발견되면 끝)
  • NOT EXIST 는 반대로 판별식을 만족하는 row  가 하나도 없을때 TRUE 를 return 한다

*EXIST

한번이라도 100 보다 큰 amount 를 지불한 적 있는 고객

SELECT name
FROM customer c
WHERE EXISTS
(SELECT 1
FROM payment p
WHERE p.customer_id = c.customer_id
AND amount > 100 )
ORDER BY name;




*NOT EXIST

한번도 100 보다 큰 amount 를 지불한 적 어는 고객

SELECT name
FROM customer c
WHERE NOT EXISTS
(SELECT 1
FROM payment p
WHERE p.customer_id = c.customer_id
AND amount > 100 )
ORDER BY name;

Comments

Popular posts from this blog

삼성전자 무선사업부 퇴사 후기

개발자 커리어로 해외 취업, 독일 이직 프로세스

코드리뷰에 대하여