집 >데이터 베이스 >MySQL 튜토리얼 >하위 쿼리에서 MySQL의 '잘못된 그룹 기능 사용' 오류를 수정하는 방법은 무엇입니까?
MySQL의 "잘못된 그룹 기능 사용" 오류 디버깅
문제:
두 개 이상의 공급업체에서 공급한 부품을 식별하도록 설계된 쿼리에서 "잘못된 그룹 기능 사용" 오류가 발생했습니다.
<code class="language-sql">SELECT c1.pid -- Select part ID (pid) FROM Catalog AS c1 -- From the Catalog table WHERE c1.pid IN ( -- Where pid is in the set: SELECT c2.pid -- Of pids FROM Catalog AS c2 -- From the Catalog table WHERE c2.pid = c1.pid AND COUNT(c2.sid) >= 2 -- Incorrect: COUNT in WHERE clause );</code>
문제:
이 오류는 COUNT()
함수의 부적절한 배치로 인해 발생합니다. WHERE
절은 그룹화 전에 개별 행을 필터링하므로 이 컨텍스트에서 집계 함수 COUNT()
가 유효하지 않게 됩니다.
해결책:
올바른 접근 방식은 그룹화 및 집계 HAVING
다음에 필터링하는 절을 사용하는 것입니다.
<code class="language-sql">SELECT c1.pid FROM Catalog AS c1 WHERE c1.pid IN ( SELECT c2.pid FROM Catalog AS c2 GROUP BY c2.pid HAVING COUNT(c2.sid) >= 2 );</code>
설명:
수정된 쿼리는 Catalog
을 사용하여 pid
테이블을 GROUP BY c2.pid
별로 그룹화합니다. 그런 다음 HAVING
절은 이러한 그룹을 필터링하여 공급업체 ID(sid
) 개수가 2 이상인 그룹만 유지합니다. 이를 통해 최소 두 개 이상의 공급업체가 있는 부품을 정확하게 식별할 수 있습니다. 그런 다음 외부 쿼리는 필터링된 그룹에서 pid
값을 선택합니다.
위 내용은 하위 쿼리에서 MySQL의 '잘못된 그룹 기능 사용' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!