[SQL] SQL 실행 순서로 이해하는 alias 사용 가능 절

Unit·2025년 8월 19일

SQL

목록 보기
36/59

SQL을 쓰다 보면 컬럼 alias를 WHERE절에서 쓰려다 에러가 나는 경우가 있습니다.
그런데 ORDER BY절에서는 alias를 쓸 수 있죠.
왜 이런 차이가 생길까요?


❓ 개념 설명

  • 컬럼 alias : SELECT 절에서 계산식이나 컬럼에 붙이는 별칭
  • 하지만 모든 절에서 쓸 수 있는 건 아님

👉🏻 핵심 원인 : SQL의 실행 순서


📄 SQL 실행 순서

우리가 작성하는 순서(SELECT → WHERE → ORDER BY)와 실제 실행 순서는 다릅니다.
1. FROM (테이블 읽기)
2. WHERE (행 필터링)
3. GROUP BY / HAVING
4. SELECT (컬럼 계산 + alias 생성)
5. ORDER BY
6. LIMIT
👉🏻 WHERE절은 alias 생성 이전에 실행 → alias를 모름
👉🏻 ORDER BY절은 alias 생성 이후 실행 → alias 사용 가능


🖥️ SQL 예제

-- ❌ WHERE절에서 alias 사용 → 에러 발생
SELECT  price * quantity AS total_price
FROM    orders
WHERE   total_price > 100;

-- ✅ ORDER BY에서는 정상 작동
SELECT  price * quantity AS total_price
FROM    orders
ORDER BY total_price DESC;

🧐 해결 방법

  1. 계산식 그대로 쓰기
WHERE price * quantity > 100
  1. CTE / 서브쿼리 활용 (가독성 ↑, 유지보수성 ↑)
WITH sub AS (
    SELECT price * quantity AS total_price
    FROM   orders
)
SELECT total_price
FROM   sub
WHERE  total_price > 100;

👉🏻 긴 식이나 반복적으로 쓰일 때 특히 유용합니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글