EXISTS / NOT EXISTS (2)

dragonloly·2025년 4월 23일
0

SQL

목록 보기
18/19

EXISTS는 "해당 조건을 만족하는 케이스가 1개라도 있는지 확인하는 것

즉, "해당 테이블에 그런 기록이 있냐 없냐만 본다."
서브쿼리 안에 SELECT 1을 쓰는 이유도, 실제로 뭘 가져오는 게 아니라 "있냐/없냐"만 따지기 때문

EXISTS

"A가 한 적이 있는지 확인해라"
→ "이 사람이 뭘 했는지 기록이 있으면 포함시켜!"

SELECT name
FROM students s
WHERE EXISTS (
  SELECT 1 FROM enrollments e
  WHERE e.student_id = s.student_id
)
  • 해석
    "수강신청 기록이 하나라도 있는 학생의 이름을 조회해라"
    → "해당 학생이 수강신청한 과목이 1개라도 있으면, 그 학생을 보여줘."

NOT EXISTS

"한 적이 없는 사람만 골라줘"
→ "기록이 하나도 없으면 포함시켜!"

SELECT name
FROM students s
WHERE NOT EXISTS (
  SELECT 1 FROM enrollments e
  WHERE e.student_id = s.student_id
)
  • 해석
    "수강신청을 한 번도 안 한 학생의 이름을 조회해라"

핵심 요약

  • EXISTS
    "그런 기록이 한 번이라도 있으면", "관련 기록이 있으면 포함" 그 행을 포함시킴

  • NOT EXISTS
    "그런 기록이 단 한 번도 없으면", "관련 기록이 없으면 포함"그 행을 포함시킴

profile
IT기업에서 운영 기획 담당하고 있습니다 : )

0개의 댓글