집 >데이터 베이스 >MySQL 튜토리얼 >내 SQL 개수가 개별 행 대신 모든 행을 반환하는 이유는 무엇입니까?
SQL COUNT 문제 해결: 개별 행 개수 가져오기
SQL 쿼리에 중요한 GROUP BY
절이 누락되어 잘못된 총 행 수가 생성될 수 있습니다. 이 예에서는 맨 위 행에 2라는 개수가 표시되어 집계에 문제가 있음을 나타냅니다.
제공된 복합 쿼리의 핵심 문제는 Aura
개수:
<code class="language-sql">LEFT JOIN ( select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura` from messages_aura ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>
GROUP BY
절이 없는 이 하위 쿼리는 messages_aura
또는 AuraID
에 관계없이 AuraStatus
의 모든 행을 합산합니다. 따라서 항상 테이블의 총 행 수(귀하의 경우 2)를 반환합니다.
해결책은 GROUP BY
절을 추가하여 올바르게 그룹화하고 계산하는 것입니다.
<code class="language-sql">LEFT JOIN ( select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura` from messages_aura GROUP BY `AuraID`, `AuraStatus` ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)</code>
이 수정된 하위 쿼리 그룹은 messages_aura
행을 AuraID
및 AuraStatus
기준으로 각 그룹의 Aura
개수를 정확하게 계산합니다. 이렇게 수정하면 예상한 결과(맨 아래 행에 1, 맨 위 행에 2)가 생성됩니다.
위 내용은 내 SQL 개수가 개별 행 대신 모든 행을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!