별칭이 지정되어 있더라도, 원래 컬럼명을 꼭 써야되는 경우도 있다고 함
ORDER BY에서는 원래 컬럼명과 별칭(Alias) 둘 다 사용 가능합니다.
즉, SELECT에서 AS로 지정한 별칭을 사용할 수도 있고, 원래 컬럼명을 그대로 사용할 수도 있습니다.
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) 모두 사용 가능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)는 가독성이 떨어질 수 있으므로, 컬럼명을 명시하는 것이 좋습니다.
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에서 자유롭게 원래 컬럼명과 별칭을 사용할 수 있습니다! 🚀