Das "Wo" und "Have" -Klauseln in SQL dienen unterschiedlichen Zwecken, obwohl beide auf den Bedingungen die Zeilen filtern. Hier ist eine Aufschlüsselung:
wo Klausel
* Zweck: Filterreihen vor Alle Aggregationsoperationen (wie "Summe", "avg", "count" usw.).
* gilt für: Einzelreihen.
* Bedingungen: In der Regel handelt es sich um Vergleiche und logische Operatoren, die auf einzelnen Spalten innerhalb der Tabelle arbeiten.
* Beispiel:
`` `SQL
Wählen Sie * von Kunden, wobei Country ='USA';
`` `
Diese Abfrage ruft alle Kunden aus der Tabelle "Kunden" ab, in der die Spalte "Land" gleich "USA" entspricht.
Klausel
* Zweck: Filterreihen nach Aggregationsoperationen.
* gilt für: Die Ergebnisse der Aggregation (Gruppe von).
* Bedingungen: In der Regel beinhalten Vergleiche aggregierter Werte unter Verwendung von Aggregatfunktionen (z. B. "sum (Preis)", "AVG (Alter)", "Count (*)") in Kombination mit logischen Operatoren.
* Beispiel:
`` `SQL
Wählen Sie City, AVG (Alter) als ADIVE_AGE aus
Von Kunden
Gruppe von Stadt
Durchschnittlich> 30;
`` `
Diese Abfragen gruppiert Kunden nach "Stadt" und berechnet das Durchschnittsalter für jede Stadt. Dann filtert es die Ergebnisse, um nur Städte zu zeigen, in denen das Durchschnittsalter größer als 30 liegt.
wichtige Unterschiede in der Kurzschale:
* Timing: "Wo" filtert vor der Aggregation, "Filter danach.
* Umfang: "Wo" arbeitet "auf einzelnen Reihen und arbeitet" mit aggregierten Ergebnissen ".
* Bedingungen: "Wo" Bedingungen für einzelne Spalten verwendet, verwendet "Have" Bedingungen für aggregierte Werte.
Wann verwenden Sie jede Klausel:
* Verwenden Sie `Where ', wenn Sie Daten basierend auf einzelnen Zeilenwerten filtern möchten, bevor eine Aggregation auftritt.
* Verwenden Sie "Have", wenn Sie aggregierte Ergebnisse filtern möchten (wie gruppierte Daten) basierend auf Bedingungen, bei denen aggregierte Werte beteiligt sind.
Hinweis: Sie können sowohl "Wo" als auch "" -Klauseln in derselben Abfrage haben, aber "wo" zuerst angewendet wird, um die für die Aggregation verwendeten Zeilen zu filtern, und dann verwendet werden, um die aggregierten Ergebnisse zu filtern.