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

<code class="language-sql">SELECT Name
FROM Students
WHERE Age > 20;</code>
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:

<code class="language-sql">SELECT City, AVG(Age) AS AvgAge
FROM Students
GROUP BY City
HAVING AvgAge > 25;</code>
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:

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

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>
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!

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