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