Heim >Datenbank >MySQL-Tutorial >MySQL-Fehler: „Ungültige Verwendung der Gruppenfunktion' – WHERE vs. HAVING: Wann sollte ich welche verwenden?
MySQL-Fehler: Ungültige Verwendung der Gruppierungsfunktion
Wenn bei der Verwendung von MySQL der Fehler „Ungültige Verwendung der Gruppierungsfunktion“ auftritt, stellen Sie sicher, dass Sie den Unterschied zwischen den Klauseln WHERE und HAVING verstehen.
Ziel der bereitgestellten Abfrage ist es, Teile zu finden, die von mindestens zwei Lieferanten geliefert werden. Zunächst versuchen Sie, eine WHERE-Klausel zu verwenden, um jede PID mit der Ausgabe einer Unterabfrage zu vergleichen, die SIDs berechnet. Allerdings führt MySQL das WHERE vor der Aggregation durch, was diesen Ansatz ineffektiv macht.
Die richtige Lösung ist die Verwendung der HAVING-Klausel. HAVING filtert die Ergebnisse von Aggregatfunktionen wie COUNT() und ermöglicht Ihnen so die Durchführung von Berechnungen nach der Aggregation. Durch Umschreiben der Unterabfrage mit HAVING, wie in der Antwort gezeigt:
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 )</code>
Sie können die gewünschten Ergebnisse erzielen. Die HAVING-Klausel stellt sicher, dass nur Teile mit mindestens zwei Lieferanten in die Endausgabe einbezogen werden.
Das obige ist der detaillierte Inhalt vonMySQL-Fehler: „Ungültige Verwendung der Gruppenfunktion' – WHERE vs. HAVING: Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!