programing

하위 쿼리가 있는 HAVING 절에 사용된 비그룹화 필드

i4 2023. 7. 30. 17:04
반응형

하위 쿼리가 있는 HAVING 절에 사용된 비그룹화 필드

MariaDB의 경우ONLY_FULL_GROUP_BY옵션이 활성화되었습니다. 오류가 발생했습니다.

HAVING 절에 그룹화되지 않은 필드 'vcount'가 사용되었습니다.

조회를 실행할 때

SELECT c.* FROM 
automobile_company c 
LEFT OUTER JOIN (SELECT company_id, COUNT(*) AS vcount FROM automobile_variant GROUP BY company_id) vc
USING (company_id) 
WHERE c.automobile_type = 0 AND vc.vcount > 0;

하지만 쿼리에는 다음이 없습니다.HAVING

  • MariaDB가 최적화를 위해 쿼리를 다시 작성하기 때문입니까?
  • GROUP BY를 하위 쿼리 밖으로 이동하지 않고 위 쿼리를 다시 작성할 수 있습니까?
  • 하위 쿼리 없이 간단한 LEFT OUTER JOIN을 사용하고 GROUP BY 절에서 선택해야 하는 모든 필드를 언급하는 것이 제 유일한 옵션입니까?

authoric_variant에 행이 있는지만 확인하면 되는 경우, 다음과 같이 카운트나 그룹이 필요하지 않습니다.

    SELECT c.* FROM automobile_company c WHERE c.automobile_type = 0 AND 
    EXISTS(select company_id from automobile_variant av where av.company_id=c.company_id);

언급URL : https://stackoverflow.com/questions/45146830/non-grouping-field-used-in-having-clause-with-sub-query

반응형