그 이유는 바로
대부분의 SQL 데이터베이스에서 SELECT 절은 FROM 절 뒤와 WHERE 절 앞에서 처리된다. 즉, SELECT 절에 정의된 열 별칭은 WHERE 절이 처리될 때 아직 사용할 수 없음.
SQL 엔진의 프로세스
FROM -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT
위 순서대로 흘러가기 때문에 SELECT 문에서 쓴 alias는 WHERE절에서 인식할 수 없어서 오류가 나는 것이다.
좀 더 설명하자면,
- FROM 절: SQL 엔진은 먼저 쿼리의 FROM 절을 사용하여 데이터를 검색할 테이블 식별
- JOIN 절: If 쿼리에 JOIN 절이 포함되어 있으면 SQL 엔진은 지정된 조인 조건을 사용하여 지정된 테이블 조인
- WHERE 절: 그런 다음 SQL 엔진은 WHERE 절에 지정된 조건에 따라 조인된 테이블 필터링
- GROUP BY 절 : 쿼리에 GROUP BY 절이 포함된 경우 SQL 엔진은 필터링된 데이터를 지정된 열별로 그룹화
- HAVING 절: 쿼리에 HAVING 절이 포함된 경우 SQL 엔진은 GROUP BY 절에 지정된 조건에 따라 생성된 그룹 필터링
- SELECT 절: 그런 다음 SQL 엔진은 SELECT 절을 다음에 적용. 필터링 및 그룹화된 데이터를 사용하여 원하는 열을 추출하고 절에 지정된 표현식 또는 집계 함수 적용
- ORDER BY 절: 쿼리가 ORDER BY 절을 포함하는 경우 SQL 엔진은 지정된 열과 정렬 순서를 기준으로 결과를 정렬
- LIMIT 절: 쿼리에 LIMIT 절이 포함된 경우 SQL 엔진은 지정된 수의 행만 반환
'Data > Python, MYSQL' 카테고리의 다른 글
python - 문자열 반복 (0) | 2023.08.30 |
---|---|
Python - 은행 계좌의 기능 구현 (0) | 2023.08.30 |
파이썬) 배열에서 리스트로 변환해서 사용하는 이유 (0) | 2023.04.25 |
머신러닝을 위한 수학능력 요건 (0) | 2023.02.19 |
SQL) INNER JOIN 을 쓰는 이유 (0) | 2023.02.16 |
댓글