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

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

Mary-Kate Olsen
Freigeben: 2025-01-14 17:06:46
Original
168 Leute haben es durchsucht

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

Unterschiede und Anwendungen von HAVING- und WHERE-Klauseln in SQL

Bei der Verwendung von Aggregatfunktionen und SQL-Abfragen gibt es einen wesentlichen Unterschied zwischen den HAVING- und WHERE-Klauseln. Lassen Sie uns auf die Unterschiede eingehen, um Ihre SQL-Kenntnisse zu verbessern.

HAVING: Filterung nach Aggregation

HAVING wird verwendet, um eine Bedingung auf einen aggregierten Wert anzuwenden, nachdem der Aggregationsvorgang abgeschlossen ist. Mit anderen Worten: Es fungiert als Post-Aggregationsfilter und prüft, ob das Aggregationsergebnis bestimmte Bedingungen erfüllt.

Beispielsweise ruft die folgende Abfrage Städte in Massachusetts (MA) und die entsprechende Anzahl von Adressen ab:

<code class="language-sql">SELECT City, COUNT(1) AS CNT
FROM Address
WHERE State = 'MA'
GROUP BY City;</code>
Nach dem Login kopieren

Um die Ergebnisse weiter zu verfeinern und nur Städte mit mehr als fünf Adressen anzuzeigen, verwenden Sie die HAVING-Klausel:

<code class="language-sql">SELECT City, COUNT(1) AS CNT
FROM Address
WHERE State = 'MA'
GROUP BY City
HAVING CNT > 5;</code>
Nach dem Login kopieren

WO: Vor der Aggregation filtern

Im Gegensatz zu HAVING wird WHERE zum Filtern vor der Aggregation verwendet. Es wertet Bedingungen vor dem Aggregationsprozess aus. Dies bedeutet, dass nur Datensätze in die Aggregation einbezogen werden, die die angegebene WHERE-Bedingung erfüllen.

Um mit dem vorherigen Beispiel fortzufahren, können Sie die WHERE-Klausel verwenden, um die Auswahl auf Städte in Massachusetts zu beschränken, bevor Adressen berechnet werden:

<code class="language-sql">SELECT City, COUNT(1) AS CNT
FROM Address
WHERE State = 'MA' AND City = 'Boston'
GROUP BY City;</code>
Nach dem Login kopieren

Vergleich der wichtigsten Funktionen

特性 HAVING WHERE
时间 聚合之后 聚合之前
目的 聚合后过滤 聚合前过滤
作用范围 应用于聚合值 应用于单个记录

Zusammenfassung

HAVING und WHERE spielen beide eine entscheidende Rolle bei der SQL-Abfrageoptimierung. Durch das Verständnis ihrer unterschiedlichen Funktionen und Ausführungszeiten können Sie Ihre Ergebnisse effektiv verfeinern und Ihre Datenanalysefunktionen verbessern.

Das obige ist der detaillierte Inhalt vonHAVING vs. WHERE in SQL: Wann werden die einzelnen Klauseln zum Filtern 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