>데이터 베이스 >MySQL 튜토리얼 >하위 쿼리에서 MySQL의 '잘못된 그룹 기능 사용' 오류를 수정하는 방법은 무엇입니까?

하위 쿼리에서 MySQL의 '잘못된 그룹 기능 사용' 오류를 수정하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-11 22:38:46859검색

How to Fix MySQL's

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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