본문 바로가기
goodLuck
Data/Python, MYSQL

SQL) SELECT에서 쓴 alias는 왜 WHERE절에 못 쓸까?

by snowballing 2023. 2. 20.

그 이유는 바로

대부분의 SQL 데이터베이스에서 SELECT 절은 FROM 절 뒤와 WHERE 절 앞에서 처리된다. 즉, SELECT 절에 정의된 열 별칭은 WHERE 절이 처리될 때 아직 사용할 수 없음.

 

SQL 엔진의 프로세스

FROM -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT 

위 순서대로 흘러가기 때문에 SELECT 문에서 쓴 alias는 WHERE절에서 인식할 수 없어서 오류가 나는 것이다.

 

좀 더 설명하자면,

  1. FROM 절: SQL 엔진은 먼저 쿼리의 FROM 절을 사용하여 데이터를 검색할 테이블 식별
  2. JOIN 절: If 쿼리에 JOIN 절이 포함되어 있으면 SQL 엔진은 지정된 조인 조건을 사용하여 지정된 테이블 조인
  3. WHERE 절: 그런 다음 SQL 엔진은 WHERE 절에 지정된 조건에 따라 조인된 테이블 필터링
  4. GROUP BY 절 : 쿼리에 GROUP BY 절이 포함된 경우 SQL 엔진은 필터링된 데이터를 지정된 열별로 그룹화
  5. HAVING 절: 쿼리에 HAVING 절이 포함된 경우 SQL 엔진은 GROUP BY 절에 지정된 조건에 따라 생성된 그룹 필터링
  6. SELECT 절: 그런 다음 SQL 엔진은 SELECT 절을 다음에 적용. 필터링 및 그룹화된 데이터를 사용하여 원하는 열을 추출하고 절에 지정된 표현식 또는 집계 함수 적용
  7. ORDER BY 절: 쿼리가 ORDER BY 절을 포함하는 경우 SQL 엔진은 지정된 열과 정렬 순서를 기준으로 결과를 정렬
  8. LIMIT 절: 쿼리에 LIMIT 절이 포함된 경우 SQL 엔진은 지정된 수의 행만 반환

댓글