SELECT EXISTS (...)는 SQL에서 자주 사용되는 조건 존재 여부 확인 쿼리입니다.
아래는 EXISTS 문법, 사용 이유, 사용 예시, 그리고 SELECT EXISTS (...)의 결과값 설명에 대한 정리입니다.
EXISTS란?
EXISTS는 서브쿼리(하위 쿼리)가 결과를 하나라도 반환하는지 확인하는 용도입니다.
- 하위 쿼리에 결과가 존재하면 → EXISTS는 TRUE (1) 반환
- 결과가 하나도 없으면 → FALSE (0) 반환
기본 문법
SELECT EXISTS (
SELECT 1 FROM 테이블 WHERE 조건
);
- SELECT 1이나 SELECT * 모두 가능 (성능 차이는 없음)
- 상위 쿼리는 1 또는 0을 반환 (MySQL/MariaDB 기준)
예시: 내가 이 책에 좋아요를 눌렀는지 확인
SELECT EXISTS (
SELECT 1
FROM likes
WHERE user_id = ? AND book_id = ?
) AS isLiked;
- user_id와 book_id에 해당하는 row가 likes 테이블에 있으면 1 반환
- 없으면 0 반환
결과 예시
isLiked
| 1 |
| 0 |
전체 쿼리에 포함하는 방식 예시
SELECT
books.*,
category.name AS category_name,
(
SELECT EXISTS (
SELECT 1
FROM likes
WHERE likes.user_id = ? AND likes.book_id = books.id
)
) AS isLiked
FROM books
LEFT JOIN category ON books.categoryId = category.id
WHERE books.id = ?;
EXISTS vs COUNT 차이
| 비교 항목 | EXISTS | COUNT |
| 반환값 | 1 또는 0 | 정수 (예: 3) |
| 용도 | 존재 여부 | 개수 확인 |
| 성능 | 빠름 (결과 1개 찾으면 종료) | 느림 (모든 결과 카운트) |
| 추천 상황 | O/X 체크 | 정확한 개수 필요할 때 |
정리
| 문법 | 설명 |
| SELECT EXISTS (...) | 하위 쿼리 결과 존재 여부 확인 (1 또는 0 반환) |
| SELECT COUNT(*) | 하위 쿼리 결과 개수 확인 (0, 1, 2, ...) |
| 추천 용도 | "좋아요 눌렀는지", "회원 가입했는지" 같은 여부 판단 시 EXISTS 추천 |
'mariaDB > 3. SQL 사용법' 카테고리의 다른 글
| 도서구매사이트 - 주문 API 작성 시 코드 리팩토링 (0) | 2025.05.21 |
|---|---|
| IN (?, ?, ?) 문법 (0) | 2025.05.20 |
| 좋아요 총 개수 보내주기 (개별 도서 조회) (1) | 2025.05.19 |
| 두 컬럼의 값을 한 쌍으로 제약조건 만들기 (0) | 2025.05.19 |
| 데이터베이스 페이징 (1) | 2025.05.16 |