Heim > Datenbank > MySQL-Tutorial > Warum gibt meine SQL-Zählung alle Zeilen statt einzelner Zeilen zurück?

Warum gibt meine SQL-Zählung alle Zeilen statt einzelner Zeilen zurück?

DDD
Freigeben: 2025-01-18 05:51:07
Original
277 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage