Heim > Datenbank > MySQL-Tutorial > WHERE vs. HAVING in SQL: Wann werden die einzelnen Klauseln verwendet?

WHERE vs. HAVING in SQL: Wann werden die einzelnen Klauseln verwendet?

Patricia Arquette
Freigeben: 2025-01-14 17:26:44
Original
728 Leute haben es durchsucht

WHERE vs. HAVING in SQL: When to Use Each Clause?

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

Die

WHERE-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:

SELECT Name
FROM Students
WHERE Age > 20;
Nach dem Login kopieren

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:

SELECT City, AVG(Age) AS AvgAge
FROM Students
GROUP BY City
HAVING AvgAge > 25;
Nach dem Login kopieren

Hauptunterschiede

Der grundlegende Unterschied zwischen

HAVING 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:

CityAge
Boston22
Boston25
New York28
New York30
Los Angeles23
Los Angeles29

Abfragen mit WHERE:

SELECT City, COUNT(*) AS Count
FROM Students
WHERE Age > 25;
Nach dem Login kopieren

Ausgabe:

CityCount
New York2

Abfragen mit HAVING:

SELECT City, COUNT(*) AS Count
FROM Students
GROUP BY City
HAVING COUNT(*) > 1;
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage