한 건이 돌아오면 =·> 로 비교하고, 여러 건이면 IN·ANY·ALL·EXISTS 를 써야 한다.
왜 그런지까지
단일행 서브쿼리에 여러 건이 돌아오면 오류가 난다. 그래서 결과가 여럿일 수 있으면 IN 이나 ANY/ALL 을 쓴다.
ANY 는 하나라도 만족하면 참(> ANY 는 최솟값보다 크면 참), ALL 은 모두 만족해야 참(> ALL 은 최댓값보다 커야 참)이다. EXISTS 는 값을 비교하지 않고 '행이 있는가'만 보므로, 한 건만 찾으면 바로 멈춘다.
ANY 와 ALL 을 나란히 — 어느 쪽이 더 많이 걸리는가
> ANY vs > ALL
> ANY 는 목록의 최솟값보다 크면 참이고, > ALL 은 목록의 최댓값보다 커야 참이다.
IN vs EXISTS
IN 은 서브쿼리 결과를 값 목록으로 만들어 비교하고, EXISTS 는 행이 있는지만 확인해 하나 찾으면 멈춘다.
넣어 두면 오늘 · 1일 · 3일 · 7일 · 14일 · 30일 간격으로 다시 물어봅니다