mariaDB/3. SQL 사용법

EXISTS 문법

bbomkim 2025. 5. 19. 22:32

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 추천