order by 별칭 사용시 원래 컬럼명은..?

SQL 공부

목록 보기
4/11

개인생각

별칭이 지정되어 있더라도, 원래 컬럼명을 꼭 써야되는 경우도 있다고 함


ORDER BY에서는 원래 컬럼명과 별칭(Alias) 둘 다 사용 가능합니다.
즉, SELECT에서 AS로 지정한 별칭을 사용할 수도 있고, 원래 컬럼명을 그대로 사용할 수도 있습니다.


1. ORDER BY에서 별칭과 원래 컬럼명 사용 가능

SELECT salary AS monthly_salary
FROM employees
ORDER BY monthly_salary;  -- ✅ 별칭 사용 가능
SELECT salary AS monthly_salary
FROM employees
ORDER BY salary;  -- ✅ 원래 컬럼명 사용 가능
  • 별칭(monthly_salary)과 원래 컬럼명(salary) 모두 사용 가능

2. ORDER BY에서 컬럼 순서(index)도 사용 가능

SELECT salary AS monthly_salary, name
FROM employees
ORDER BY 1;  -- ✅ 첫 번째 컬럼 기준 정렬 (salary)
SELECT salary, name
FROM employees
ORDER BY 2;  -- ✅ 두 번째 컬럼 기준 정렬 (name)
  • ORDER BY 1 → 첫 번째 컬럼(salary) 기준 정렬
  • ORDER BY 2 → 두 번째 컬럼(name) 기준 정렬

📌 주의:
컬럼 순서(index)는 가독성이 떨어질 수 있으므로, 컬럼명을 명시하는 것이 좋습니다.


3. ORDER BY에서 원래 컬럼명을 써야 하는 경우

일부 DBMS에서는 ORDER BY에서 원래 컬럼명을 사용해야 하는 경우가 있습니다.

예를 들어, ORDER BY에서 별칭을 사용할 수 없는 경우는 윈도우 함수(OVER) 를 사용할 때입니다.

SELECT salary, RANK() OVER (ORDER BY salary DESC) AS rank_salary
FROM employees
ORDER BY rank_salary;  -- ❌ 오류 발생

📌 해결 방법:
서브쿼리로 감싸서 별칭을 사용할 수 있도록 처리해야 합니다.

SELECT *
FROM (SELECT salary, RANK() OVER (ORDER BY salary DESC) AS rank_salary FROM employees)
ORDER BY rank_salary;  -- ✅ 정상 작동

📌 정리

사용 위치원래 컬럼명 사용 가능별칭 사용 가능컬럼 순서 사용 가능
SELECT
ORDER BY
WHERE
GROUP BY
HAVING
  • ORDER BY에서는 원래 컬럼명, 별칭, 컬럼 순서(index) 모두 사용 가능
  • 하지만, 윈도우 함수(RANK() OVER (...)) 같은 특정 경우에는 별칭을 사용하려면 서브쿼리를 사용해야 함

이제 ORDER BY에서 자유롭게 원래 컬럼명과 별칭을 사용할 수 있습니다! 🚀

profile
AI 답변 글을 주로 올립니다.

0개의 댓글