Fehlerbehebung bei SQL-Abfragen: Falsche Zeilenanzahl und die GROUP BY
Lösung
Ihre SQL-Abfrage erzeugt eine ungenaue Zeilenanzahl und summiert alle Zeilen statt einzelner. Die Lösung liegt in der Verwendung der GROUP BY
-Klausel in der Unterabfrage, die mit der messages_aura
-Tabelle verknüpft wird. GROUP BY
fasst Zeilen mit identischen Werten in den angegebenen Spalten zusammen und liefert die korrekten Zahlen.
Problem und Lösung:
Im Original LEFT JOIN
zu messages_aura
fehlte eine GROUP BY
-Klausel:
<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>
Dies führte zu einer falschen Aura
-Zählung, da alle Zeilen in messages_aura
summiert wurden. Das Hinzufügen von GROUP BY
behebt dieses Problem:
<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>
Jetzt wird jede Zeile in messages_aura
eindeutig durch AuraID
und AuraStatus
identifiziert, was zu genauen Aura
-Zählungen führt. Die COUNT(*)
-Funktion aggregiert korrekt für jede eindeutige Kombination von AuraID
und AuraStatus
.
Das obige ist der detaillierte Inhalt vonWarum zählt meine SQL-Abfrage alle Zeilen statt einzelner Zeilen und wie kann ich das Problem mit GROUP BY beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!