Verwendung von „haben“ Mit der Having-Klausel können wir verschiedene Daten nach der Gruppierung filtern, und die Where-Klausel filtert Datensätze vor der Aggregation, das heißt, sie agiert vor den Group By- und Having-Klauseln. Die Having-Klausel filtert die Gruppendatensätze nach der Aggregation. SQL-Beispiel: 1. Zeigen Sie die Gesamtbevölkerung und die Gesamtfläche jeder Region an. SELECT Region, SUM(Bevölkerung), SUM(Fläche) FROM bbc GROUP BY Region Verwenden Sie zunächst „Region“, um die zurückgegebenen Datensätze in mehrere Gruppen aufzuteilen. Dies ist die wörtliche Bedeutung von GROUP BY. Nachdem die Gruppen gebildet wurden, werden Aggregatfunktionen verwendet, um verschiedene Felder in jeder Gruppe (ein oder mehrere Datensätze) zu bearbeiten. 2. Zeigen Sie die Gesamtbevölkerung und die Gesamtfläche jeder Region an. Es werden nur Regionen mit einer Fläche von über 1.000.000 angezeigt. SELECT Region, SUM(Bevölkerung), SUM(Fläche) VON BBC GROUP BY-Region HABEN SUM(Bereich)>1000000 Hier können wir „where“ nicht verwenden, um Regionen mit mehr als 1.000.000 zu filtern, da ein solcher Datensatz in der Tabelle nicht vorhanden ist. Im Gegenteil, die Having-Klausel ermöglicht es uns, die Datengruppen nach der Gruppierung zu filtern MySQL bestimmt die Länge eines Feldes: Wählen Sie die Homepage aus der AAA-Tabelle, wobei char_length(trim(home_page))<10 und char_length(trim(home_page))>1 ist. Unterschied zwischen Where- und Having-Klauseln in MySQL Die where- und having-Klauseln in MySQL können beide Datensätze filtern, es gibt jedoch einige Unterschiede in ihrer Verwendung. Sehen wir uns ein Beispiel an: Verwenden Sie die Klauseln „group by“ und „having“, um die eindeutigen Datensätze zu ermitteln. Das SQL lautet wie folgt: Wählen Sie uid, email, count(*) als ct aus `edm_user081217` GROUP BY email Dann schau dir das an, es ist leicht zu verstehen Wählen Sie uid, E-Mail, Anzahl (*) als ct aus „edm_user081217“. GRUPPE NACH E-Mail mit ct > 1 Gruppieren Sie die E-Mails zunächst mit „Group By“ und filtern Sie dann diejenigen mit einem Wert größer als 1 heraus, sodass nur doppelte Datensätze gefunden werden. Im Folgenden sind die Unterschiede zwischen „having“ und „where“ aufgeführt: WÄHLEN Sie Stadt FROM Wetter, WO temp_lo = (WÄHLEN Sie max(temp_lo) FROM Wetter); Die Handlungsgegenstände sind unterschiedlich. Die WHERE-Klausel gilt für Tabellen und Ansichten und die HAVING-Klausel gilt für Gruppen. WHERE wählt Eingabezeilen vor der Gruppierung und Aggregation aus (und steuert somit, welche Zeilen in die Aggregatberechnung eingehen), während HAVING gruppierte Zeilen nach der Gruppierung und Aggregation auswählt. Daher kann die WHERE-Klausel keine Aggregatfunktionen enthalten. Es ist nicht sinnvoll, zu versuchen, mithilfe von Aggregatfunktionen zu bestimmen, welche Zeilen in die Aggregatoperation eingegeben werden sollen. Im Gegensatz dazu enthält die HAVING-Klausel immer Aggregatfunktionen. (Genau genommen können Sie eine HAVING-Klausel ohne Verwendung von Aggregaten schreiben, aber das wäre Zeitverschwendung. Dieselbe Bedingung kann in der WHERE-Phase effizienter verwendet werden.) Im vorherigen Beispiel können wir die Städtenamenbeschränkung im WHERE anwenden, da keine Aggregation erforderlich ist. Dies ist effizienter als das Hinzufügen einer Einschränkung in HAVING, da wir Gruppierungs- und Aggregationsberechnungen für Zeilen vermeiden, die die WHERE-Prüfung nicht bestehen. Zusammenfassend: „Having“ folgt normalerweise auf „Group by“ und funktioniert als Teil der Datensatzgruppenauswahl. Wobei ausgeführt wird, um mit allen Daten zu arbeiten. Darüber hinaus können Aggregatfunktionen verwendet werden, z. B. sum(qty)>1000 Zusammenfassen Oben ist die vom Herausgeber eingeführte Analyse der Verwendung von MySQL. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: So erkennen Sie die Ubuntu-Version mithilfe der Befehlszeile
>>: Verwendung von Umgebungsvariablen in Docker und Lösungen für häufige Probleme
1. Schwebendes Layout 1. Lassen Sie zuerst das Di...
Trigger-Einführung Ein Trigger ist eine spezielle...
Vorwort Um Dateiberechtigungen im Terminal eines ...
Einfügen von Daten in Tabellennamen (Spaltenname ...
Vor kurzem habe ich ein Projekt, bei dem ich mit i...
Urteilssymbole werden in MySQL häufig verwendet, ...
Vorwort Gestern gab es ein Projekt, das die Imple...
Inhaltsverzeichnis 1. Indextyp 1. B+ Baum 2. Was ...
Strukturbezogene Tags ----------------------------...
Vorwort Bezüglich der HugePages- und Oracle-Daten...
Der Pseudoklassenselektor :not kann Elemente filt...
Ich benutze den vi-Editor seit mehreren Jahren, h...
Die Grundlagen der MySQL-Wissenspunkte für die Co...
Warum sollten wir das Protokoll lesen? Wenn beisp...
Vorwort Vor Feierabend erhielt der Autor eine Anf...