집 >데이터 베이스 >MySQL 튜토리얼 >SQL HAVING 절에서 집계 별칭을 사용할 수 없는 이유는 무엇입니까?
HAVING 절에서 집계 별칭을 사용할 수 없는 이유는 무엇입니까?
다음 SQL 문을 고려하세요.
select col1,count(col2) as col7 from --some join operation group by col1 having col7 >= 3 -- replace col7 by count(col2) to make the code work
이 코드는 "col7"이 잘못된 열 이름임을 나타내는 오류를 생성합니다. 왜 그럴까요?
이유는 SQL 문의 실행 순서에 있습니다. HAVING 절은 SELECT 절보다 먼저 평가됩니다. 이는 HAVING 절이 평가될 때 집계 함수 count(col2)에 대한 별칭 "col7"이 아직 정의되지 않았음을 의미합니다.
SQL은 다음 순서로 쿼리를 실행합니다.
따라서 주어진 코드에서 , HAVING 절은 SELECT 절에 정의되기 전에 별칭 "col7"을 사용하려고 시도합니다. 문제를 해결하려면 "col7"을 집계 함수 자체로 바꾸면 됩니다.
select col1,count(col2) from --some join operation group by col1 having count(col2) >= 3
이렇게 하면 HAVING 절이 col2의 집계 수를 올바르게 평가할 수 있습니다.
위 내용은 SQL HAVING 절에서 집계 별칭을 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!