본문 바로가기
프로그래밍/SQL, Hive, SAS 관련 정보

[SQL 기초] Sub-query Scope

by TrillionNT 2025. 4. 13.

2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents


Sub query에 alias를 가할 수 있는데요, 이 때 이 scope에 대해서 주의해야할 점이 있습니다. 

 

 

  • 파생 테이블(서브쿼리의 FROM 절에 정의된 별칭)은 해당 쿼리 블록 내에서만 유효합니다.
  • 외부 쿼리에서 정의한 별칭을 내부 서브쿼리에서 그대로 사용할 수 없으므로, 내부에서 재참조하면 오류가 발생합니다.
  • 서브쿼리는 독립된 쿼리 블록으로 간주되며, 별도로 평가됩니다.

 

 

SELECT user_id
FROM (
    SELECT user_id, COUNT(*) AS cnt
    FROM MovieRating
    GROUP BY user_id
) t
WHERE cnt = (SELECT MAX(t.cnt) FROM t);  -- ❌ 오류 발생: t는 이 서브쿼리 내에서 정의되지 않음

 

서브쿼리 (SELECT MAX(t.cnt) FROM t)는 새로운 쿼리 블록이므로 t를 알지 못해서 오류가 납니다.