Fehlerbehebung bei SQL COUNT: Abrufen einzelner Zeilenzahlen
Ihre SQL-Abfrage erzeugt wahrscheinlich eine falsche Gesamtzeilenzahl, da eine wichtige GROUP BY
-Klausel fehlt. Das Beispiel zeigt einen Zählwert von 2 für die oberste Zeile, was auf ein Problem mit der Aggregation hinweist.
Das Kernproblem der bereitgestellten komplexen Abfrage liegt in der Unterabfrage, die die Aura
Anzahl berechnet:
<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>
Diese Unterabfrage ohne GROUP BY
-Klausel summiert alle Zeilen in messages_aura
, unabhängig von AuraID
oder AuraStatus
. Daher wird immer die Gesamtzeilenanzahl der Tabelle zurückgegeben (in Ihrem Fall 2).
Die Lösung besteht darin, eine GROUP BY
-Klausel hinzuzufügen, um Folgendes richtig zu gruppieren und zu zählen:
<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>
Diese überarbeitete Unterabfrage gruppiert messages_aura
Zeilen nach AuraID
und AuraStatus
, wobei Aura
für jede Gruppe genau gezählt wird. Diese Korrektur führt zu den erwarteten Ergebnissen – 1 für die untere Reihe und 2 für die obere Reihe.
Das obige ist der detaillierte Inhalt vonWarum gibt meine SQL-Zählung alle Zeilen statt einzelner Zeilen zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!