Maison >base de données >tutoriel mysql >Pourquoi mon compteur SQL renvoie-t-il toutes les lignes au lieu de lignes individuelles ?

Pourquoi mon compteur SQL renvoie-t-il toutes les lignes au lieu de lignes individuelles ?

DDD
DDDoriginal
2025-01-18 05:51:07284parcourir

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

Dépannage de SQL COUNT : obtention du nombre de lignes individuelles

Votre requête SQL produit probablement un nombre total de lignes incorrect, car il manque une clause GROUP BY cruciale. L'exemple montre un décompte de 2 pour la ligne du haut, indiquant un problème d'agrégation.

Le problème principal de la requête complexe fournie réside dans la sous-requête calculant le Aura nombre :

<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>

Cette sous-requête, sans clause GROUP BY, additionne toutes les lignes de messages_aura, indépendamment de AuraID ou AuraStatus. Par conséquent, il renvoie toujours le nombre total de lignes du tableau (2 dans votre cas).

La solution est d'ajouter une clause GROUP BY pour regrouper et compter correctement :

<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>

Cette sous-requête révisée regroupe messages_aura lignes par AuraID et AuraStatus, en comptant avec précision Aura pour chaque groupe. Cette correction donnera les résultats attendus : 1 pour la ligne du bas et 2 pour la ligne du haut.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn