Maison >base de données >tutoriel mysql >Pourquoi ma requête SQL compte-t-elle toutes les lignes au lieu des lignes individuelles, et comment puis-je y remédier à l'aide de GROUP BY ?

Pourquoi ma requête SQL compte-t-elle toutes les lignes au lieu des lignes individuelles, et comment puis-je y remédier à l'aide de GROUP BY ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-18 05:36:10896parcourir

Why is my SQL query counting all rows instead of individual rows, and how can I fix it using GROUP BY?

Dépannage des requêtes SQL : nombre de lignes incorrect et GROUP BY Solution

Votre requête SQL produit un nombre de lignes inexact, additionnant toutes les lignes au lieu de individuellement. La solution réside dans l'utilisation de la clause GROUP BY dans la sous-requête qui rejoint la table messages_aura. GROUP BY regroupe les lignes avec des valeurs identiques dans les colonnes spécifiées, fournissant les décomptes corrects.

Problème et solution :

L'original LEFT JOIN à messages_aura manquait d'une clause GROUP BY :

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

Cela a entraîné un décompte Aura incorrect, car il totalisait toutes les lignes de messages_aura. L'ajout de GROUP BY corrige ceci :

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

Maintenant, chaque ligne de messages_aura est identifiée de manière unique par AuraID et AuraStatus, ce qui permet d'obtenir des décomptes Aura précis. La fonction COUNT(*) agrège correctement pour chaque combinaison unique de AuraID et AuraStatus.

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