>데이터 베이스 >MySQL 튜토리얼 >내 SQL 개수가 개별 행 대신 모든 행을 반환하는 이유는 무엇입니까?

내 SQL 개수가 개별 행 대신 모든 행을 반환하는 이유는 무엇입니까?

DDD
DDD원래의
2025-01-18 05:51:07285검색

Why Does My SQL Count Return All Rows Instead of Individual Rows?

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 행을 AuraIDAuraStatus 기준으로 각 그룹의 Aura 개수를 정확하게 계산합니다. 이렇게 수정하면 예상한 결과(맨 아래 행에 1, 맨 위 행에 2)가 생성됩니다.

위 내용은 내 SQL 개수가 개별 행 대신 모든 행을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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