>데이터 베이스 >MySQL 튜토리얼 >SQL의 HAVING 절에서 별칭 집계를 사용할 수 없는 이유는 무엇입니까?

SQL의 HAVING 절에서 별칭 집계를 사용할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-31 17:32:10851검색

Why Can't I Use Aliased Aggregates in SQL's HAVING Clause?

HAVING 절에서 별칭 집계가 금지되는 이유

SQL에서 집계에 별칭을 사용하려고 하면 오류가 발생하는 경우가 많습니다. HAVING 절. 이는 SQL이 쿼리를 처리하는 특정 순서에서 비롯됩니다.

GROUP BY 연산의 결과를 필터링하는 HAVING 절은 SELECT 절보다 먼저 평가됩니다. 결과적으로 HAVING 절을 평가할 때 SELECT 절에 정의된 별칭을 아직 사용할 수 없습니다.

이를 더 잘 이해하기 위해 다음과 같은 논리적 쿼리 실행 순서를 고려해 보겠습니다.

  1. FROM 절에 조인된 모든 테이블의 결과가 형성됩니다.
  2. WHERE 절은 검색에 맞지 않는 행을 필터링합니다.
  3. 행은 GROUP BY 절에 따라 그룹화됩니다.
  4. HAVING 절 기준을 충족하지 않는 그룹은 제거됩니다.
  5. 집계 함수를 적용하여 집계 값을 계산합니다. .
  6. SELECT 절의 표현식은 다음과 같습니다. 평가됩니다.

HAVING 절은 SELECT 절보다 먼저 평가되므로 나중에 쿼리에서 정의된 별칭을 참조할 수 없습니다. 이 제한 사항은 예에 표시된 것처럼 HAVING 절에 별칭을 사용하면 "잘못된 열 이름" 오류가 발생하는 이유를 설명합니다.

반대로 별칭은 ORDER BY 절이 다음과 같기 때문에 ORDER BY 절에서 작동합니다. SELECT 절 다음에 평가됩니다. 따라서 SELECT 절에 정의된 별칭을 ORDER BY 절에서도 사용할 수 있습니다.

위 내용은 SQL의 HAVING 절에서 별칭 집계를 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.