Tags
- 트리
- create
- ORM
- 쟝고
- 스택
- distinct
- 뷰
- 이진트리
- 완전검색
- DB
- 그리디
- update
- SQL
- outer join
- drf
- Django
- Article & User
- migrations
- stack
- M:N
- Queue
- N:1
- count
- Tree
- 통계학
- 큐
- regexp
- Vue
- delete
- 백트래킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Notice
Recent Posts
Link
데이터 분석 기술 블로그
EXISTS 연산자 본문
EXISTS 연산자란?
"EXISTS"는 서브쿼리의 결과가 존재하는지 확인하는 데 사용되는 조건 연산자입니다. 주로 데이터 존재 여부를 확인하고, 참(TRUE) 또는 거짓(FALSE) 값을 반환합니다.
EXISTS의 기본 구문
SELECT column1, column2
FROM table_name
WHERE EXISTS (
SELECT 1
FROM another_table
WHERE condition
);
- EXISTS:
- 서브쿼리가 하나 이상의 결과를 반환하면 TRUE를 반환.
- 서브쿼리가 결과를 반환하지 않으면 FALSE를 반환.
- 서브쿼리:
- EXISTS 내부의 쿼리는 실제 데이터를 반환하는 것이 아니라 결과가 존재하는지 여부만 확인.
EXISTS의 특징
- 빠른 처리:
- EXISTS는 서브쿼리의 결과 행 개수와 상관없이, 첫 번째로 확인되는 결과가 있을 때 즉시 TRUE를 반환하므로 효율적입니다.
- SELECT 내용은 상관없음:
- 서브쿼리 내부의 SELECT는 실제로 반환되는 값을 중요하게 여기지 않으므로 **SELECT 1**이나 **SELECT ***를 사용할 수 있습니다.
- 권장: SELECT 1 (의미 전달이 명확).
- TRUE/FALSE 반환:
- 서브쿼리가 참이면 EXISTS는 해당 행을 선택.
- 서브쿼리가 거짓이면 해당 행을 제외.
EXISTS와 IN
예제
1. EXISTS로 데이터 존재 확인
문제: 고객이 주문을 한 경우에만 고객 이름 반환.
SELECT name
FROM Customers C
WHERE EXISTS (
SELECT 1
FROM Orders O
WHERE C.customer_id = O.customer_id
);
2. NOT EXISTS 사용
문제: 주문을 하지 않은 고객의 이름 반환.
SELECT name
FROM Customers C
WHERE NOT EXISTS (
SELECT 1
FROM Orders O
WHERE C.customer_id = O.customer_id
);