Detaillierte Erläuterung der Unterschiede zwischen HAVING- und WHERE-Klauseln in SQL
In SQL werden die Schlüsselwörter HAVING
und WHERE
zum Filtern von Daten verwendet, sie haben jedoch unterschiedliche Funktionen. Beide werden für die bedingte Auswahl verwendet, ihre Anwendung hängt jedoch vom Vorhandensein oder Fehlen der GROUP BY
-Klausel ab.
WHERE-Klausel
DieWHERE
-Klausel wird vor dem Aggregationsvorgang ausgeführt und wählt bestimmte Zeilen basierend auf ihren Werten aus. Die folgende Abfrage ruft beispielsweise die Namen aller Schüler ab, die älter als 20 sind:
<code class="language-sql">SELECT Name FROM Students WHERE Age > 20;</code>
HAVING-Klausel
Im Gegensatz dazu wird die HAVING
-Klausel nach der Anwendung der Aggregatfunktion ausgeführt. Es filtert Zeilengruppen basierend auf aggregierten Werten, was in Szenarien nützlich ist, in denen Sie aggregierte Ergebnisse untersuchen müssen.
Die folgende Abfrage ruft beispielsweise das durchschnittliche Studentenalter in jeder Stadt ab und filtert dann die Ergebnisse, um nur Städte anzuzeigen, in denen das Durchschnittsalter über 25 liegt:
<code class="language-sql">SELECT City, AVG(Age) AS AvgAge FROM Students GROUP BY City HAVING AvgAge > 25;</code>
Hauptunterschiede
Der grundlegende Unterschied zwischenHAVING
und WHERE
ist ihre Ausführungszeit. WHERE
filtert Zeilen vor der Aggregation, während HAVING
Gruppen nach der Aggregation filtert. Dies bedeutet, dass HAVING
zum Überprüfen von Bedingungen für aggregierte Werte verwendet wird, während WHERE
zum Überprüfen von Bedingungen für einzelne Zeilenwerte verwendet wird.
Beispiel
Betrachten Sie die folgende Tabelle mit Beispieldaten:
City | Age |
---|---|
Boston | 22 |
Boston | 25 |
New York | 28 |
New York | 30 |
Los Angeles | 23 |
Los Angeles | 29 |
Abfragen mit WHERE:
<code class="language-sql">SELECT City, COUNT(*) AS Count FROM Students WHERE Age > 25;</code>
Ausgabe:
City | Count |
---|---|
New York | 2 |
Abfragen mit HAVING:
<code class="language-sql">SELECT City, COUNT(*) AS Count FROM Students GROUP BY City HAVING COUNT(*) > 1;</code>
Ausgabe:
City | Count |
---|---|
Boston | 2 |
New York | 2 |
In diesem Beispiel ruft die WHERE
-Klausel die Anzahl der Studenten ab, die älter als 25 sind, während die HAVING
-Klausel die Städte mit mehr als 1 Studenten in jeder Stadt abruft.
Das obige ist der detaillierte Inhalt vonWHERE vs. HAVING in SQL: Wann werden die einzelnen Klauseln verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!