SQL 쿼리의 열 별칭을 동일한 SELECT 문에서 재사용할 수 없다는 설명
주어진 SQL 쿼리에서 SELECT 문 뒤의 표현식(ROUND(avg_time * cnt, 2))에 열 별칭(avg_time 및 cnt)을 사용해 보세요. 그러나 후속 SELECT 표현식에서는 열 별칭에 액세스할 수 없기 때문에 오류가 발생합니다.
이러한 제한은 SQL 엔진이 쿼리를 처리하는 순서로 인해 발생합니다. SELECT 문이 먼저 실행되고 이 단계에서 별칭이 생성됩니다. 그러나 후속 표현식은 나중에 처리되며 이때 별칭은 아직 정의되지 않습니다.
해결책: 하위 쿼리 사용
이 제한 사항을 해결하기 위해 하위 쿼리를 사용할 수 있습니다. 하위 쿼리는 다른 쿼리 내에 포함된 별도의 쿼리입니다. 이 경우 하위 쿼리를 사용하여 별칭을 만든 다음 외부 쿼리에서 액세스할 수 있습니다.
다음 쿼리는 하위 쿼리를 사용하여 원래 쿼리를 캡슐화하고 외부 레이어에서 열 별칭을 사용할 수 있도록 합니다.
<code class="language-sql">SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown FROM ( SELECT COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, MAX(time) as max_time, ROUND(AVG(time), 2) as avg_time, MIN(time) as min_time, COUNT(path) as cnt, path FROM loadtime GROUP BY path ORDER BY avg_time DESC LIMIT 10 ) X;</code>
이 쿼리에서 하위 쿼리(괄호 안)는 열 별칭 stddev_time, max_time, avg_time, min_time 및 cnt를 생성합니다. 그런 다음 외부 쿼리는 오류 없이 ROUND(avg_time * cnt, 2) 표현식에 사용되는 별칭 avg_time을 포함하여 하위 쿼리에서 열을 선택합니다.
위 내용은 동일한 SELECT 문에서 열 별칭을 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!