즉, "해당 테이블에 그런 기록이 있냐 없냐만 본다."
서브쿼리 안에 SELECT 1을 쓰는 이유도, 실제로 뭘 가져오는 게 아니라 "있냐/없냐"만 따지기 때문
"A가 한 적이 있는지 확인해라"
→ "이 사람이 뭘 했는지 기록이 있으면 포함시켜!"
SELECT name
FROM students s
WHERE EXISTS (
SELECT 1 FROM enrollments e
WHERE e.student_id = s.student_id
)
"한 적이 없는 사람만 골라줘"
→ "기록이 하나도 없으면 포함시켜!"
SELECT name
FROM students s
WHERE NOT EXISTS (
SELECT 1 FROM enrollments e
WHERE e.student_id = s.student_id
)
EXISTS
"그런 기록이 한 번이라도 있으면", "관련 기록이 있으면 포함" 그 행을 포함시킴
NOT EXISTS
"그런 기록이 단 한 번도 없으면", "관련 기록이 없으면 포함"그 행을 포함시킴