56. SQL - alias 테이블 별칭, 언제 생략해도 될까?

Jason·2026년 1월 28일

SQL

목록 보기
39/47

SQL 내가 틀린 것들 #56 — 테이블 별칭, 언제 생략해도 될까?


🤔 헷갈렸던 상황

WITH cte_rn AS (
  SELECT
    p.customer_id,
    DATE_FORMAT(p.purchased_at, "%Y-%m-%d") AS purchased_at,
    ROW_NUMBER() OVER(PARTITION BY p.customer_id ORDER BY p.purchased_at DESC) AS rn_desc,
    COUNT(*) OVER(PARTITION BY p.customer_id) AS purchase_count
  FROM purchases p
)
...

이거 p. 빼도 되나? 🤔


✅ 정답: 테이블이 1개면 생략 가능!

WITH cte_rn AS (
  SELECT
    customer_id,  -- ✅ p. 없어도 OK!
    DATE_FORMAT(purchased_at, "%Y-%m-%d") AS purchased_at,
    ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY purchased_at DESC) AS rn_desc,
    COUNT(*) OVER(PARTITION BY customer_id) AS purchase_count
  FROM purchases
)
...

테이블이 1개뿐이면 어디서 온 컬럼인지 명확하니까!


❌ 생략하면 안 되는 경우

JOIN으로 테이블이 2개 이상일 때

SELECT
  customer_id,  -- ❌ 어느 테이블? 에러 가능!
  name
FROM customers c
JOIN orders o ON c.id = o.customer_id
SELECT
  c.customer_id,  -- ✅ 명확!
  c.name
FROM customers c
JOIN orders o ON c.id = o.customer_id

같은 컬럼명이 여러 테이블에 있으면 반드시 명시!


📌 정리

상황별칭 생략
테이블 1개✅ OK
테이블 2개 이상 (JOIN)⚠️ 웬만하면 명시!
같은 컬럼명이 여러 테이블에❌ 반드시 명시!

💡 결론

테이블 1개 → p. 생략 가능!

테이블 2개 이상 → 명시하는 습관!


🔥 실전 팁

헷갈리면 그냥 항상 별칭 붙이자!

-- 이렇게 하면 실수 없음
p.customer_id
p.purchased_at

명확한 게 최고다! 💪

profile
Data Analyst | Thoughts Become Things. 할 수 있다고 생각하면 할 수 있다. 할 수 없다고 생각하면 할 수 없다. | www.linkedin.com/in/명수-제-7ab843200

0개의 댓글