Data Engineering/SQL
[MySQL] WHERE vs SELECET vs ORDER BY 실행순서 (Unknown column 에러가 나는 이유)
minjiwoo
2023. 4. 6. 17:32
728x90
SQL에서는 별칭을 사용할 수 있다. 그런데 구문에 따라서 별칭 사용이 가능할 수도 , 아닐 수도 있다. 이는 SQL 쿼리가 실행될 때 순서가 있기 때문이다.
예를 들어서, 다음과 같은 테이블이 있다고 하자, 가격과 수량 정보가 있는 간단한 테이블이다.
가격과 수량을 곱해서 amount 라는 별칭으로 컬럼을 하나 더 만들어 주었다.
그런데 다음과 같이 WHERE 절에서 amount 라는 별칭을 사용하게 되면 Unknown column 이라는 에러가 발생한다.
이는 SQL 서버에서 내부처리가
WHERE -> SELECT -> ORDER BY 구 순서로 실행되기 때문이다. 그리고 SELECT 구가 실행될 때 별칭 amount 가 지정된다.
따라서 SELECT 다음으로 실행되는 ORDER BY 구에서 amount 라는 별칭을 사용하는 경우 문제없이 실행되는 것을 확인할 수 있다.
728x90