반환 형태의 기준 서브쿼리는 이름보다 몇 행, 몇 열을 돌려주느냐로 읽으면 어디에 넣을지 바로 보입니다.

결과가 작으면 하나의 값처럼 식에 들어가고, 길어지면 비교 목록이 되며, 넓어지면 임시 테이블처럼 외부 쿼리가 다시 사용합니다.

판단 순서
행 수를 먼저 보고, 그다음 열 수를 보면 분류가 끝납니다.

1행 1열이면 값, N행 1열이면 목록, N행 M열이면 FROM 절에서 다룰 결과 집합입니다.

행 × 열 반환 모양
1열
여러 열
1행
스칼라 서브쿼리 1행 1열
값 하나가 필요한 자리에 바로 들어갑니다. 평균, 최대값처럼 비교 기준을 만들 때 가장 자주 보입니다.
WHERE price > (
  SELECT AVG(price) FROM products
)
행 서브쿼리 1행 N열
컬럼 묶음 하나를 비교합니다. 외부 쿼리의 한 행과 서브쿼리의 한 행이 같은지 확인할 때 사용합니다.
WHERE (dept_id, grade) = (
  SELECT dept_id, grade FROM ...
)
여러 행
열 서브쿼리 N행 1열
값 목록을 돌려주므로 IN, ANY, ALL의 비교 집합으로 읽으면 됩니다.
WHERE user_id IN (
  SELECT user_id FROM orders
)
테이블 서브쿼리 N행 M열
임시 결과 집합을 만든 뒤 외부 쿼리가 다시 필터링하거나 정렬합니다. 보통 FROM 절의 인라인 뷰로 나타납니다.
FROM (
  SELECT category, SUM(price)
  FROM products GROUP BY category
) summary