logo

Unterschied zwischen WO und HABEN

Die WHERE- und HAVING-Klauseln werden in diesem Artikel ausführlich besprochen. Sie werden auch zum Filtern von Datensätzen in SQL-Abfragen verwendet. Der Unterschied zwischen der WHERE- und der HAVING-Klausel ist die häufigste Frage, die während eines Vorstellungsgesprächs gestellt wird. Der Hauptunterschied zwischen ihnen besteht darin, dass die WHERE-Klausel verwendet wird, um eine Bedingung zum Filtern von Datensätzen anzugeben, bevor Gruppierungen vorgenommen werden, während die HAVING-Klausel verwendet wird, um eine Bedingung zum Filtern von Werten aus einer Gruppe anzugeben. Bevor wir den Vergleich anstellen, werden wir diese zunächst kennen SQL Klauseln.

WO vs. HABEN

WHERE-Klausel

Die WHERE-Klausel in MySQL wird mit SELECT verwendet. EINFÜGEN , AKTUALISIEREN , Und LÖSCHEN Abfragen zum Filtern von Daten aus der Tabelle oder Beziehung. Es beschreibt eine bestimmte Bedingung beim Abrufen von Datensätzen aus einer einzelnen Tabelle oder mehreren Tabellen mithilfe der JOIN-Klausel. Wenn die angegebene Bedingung erfüllt ist, wird der jeweilige Wert aus der Tabelle zurückgegeben. Die WHERE-Klausel legt Bedingungen für die ausgewählten Spalten fest.

Die WHERE-Klausel in MySQL kann dies auch Implementieren Sie die logischen Verknüpfungen UND, ODER und NICHT. Sie werden als boolesche Bedingung bezeichnet, die erfüllt sein muss WAHR um die Daten abzurufen. Die logischen Verknüpfungsausdrücke verwenden die Vergleichsoperatoren als ihre Operanden<, ,>=, = und . Die Vergleichsoperatoren werden üblicherweise zum Vergleich von Zeichenfolgen und arithmetischen Ausdrücken verwendet.

Die folgende Syntax veranschaulicht die Verwendung der WHERE-Klausel:

 SELECT column_lists, FROM table_name WHERE conditions GROUP BY column_lists; 

Nehmen wir ein Beispiel, um diese Klausel zu verstehen. Angenommen, wir haben eine Tabelle mit dem Namen Mitarbeiter die folgende Daten enthalten:

WO vs. HABEN

Wenn wir wollen um die Mitarbeiterdetails zu erhalten, deren Arbeitszeit mehr als 9 Stunden beträgt , dann können wir die Aussage wie folgt verwenden:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9; 

Wir erhalten die folgende Ausgabe, in der wir Mitarbeiterdetails sehen können, deren Arbeitszeiten mehr als 9 Stunden betragen:

WO vs. HABEN

Wenn wir die obige Abfrage mit dem verwenden GRUPPIERE NACH -Klausel erhalten wir ein anderes Ergebnis:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9 GROUP BY name; 

Hier ist die Ausgabe:

WO vs. HABEN

HAVING-Klausel

HAVING-Klausel in MySQL Wird in Verbindung mit GROUP BY verwendet Mit der Klausel können wir Bedingungen angeben, die filtern, welche Gruppenergebnisse im Ergebnis angezeigt werden. Es werden nur die Werte aus den Gruppen im Endergebnis zurückgegeben, die bestimmte Bedingungen erfüllen. Wir können die WHERE- und HAVING-Klausel bei der Auswahl auch zusammen verwenden. In diesem Fall filtert die WHERE-Klausel zuerst die einzelnen Zeilen, dann werden die Zeilen gruppiert, führt Aggregatberechnungen durch und zuletzt filtert die HAVING-Klausel die Gruppen.

Diese Klausel legt Bedingungen für Gruppen fest, die durch die GROUP BY-Klausel erstellt wurden. Sie verhält sich wie die WHERE-Klausel, wenn die SQL-Anweisung nicht das Schlüsselwort GROUP BY verwendet. Wir können die Aggregatfunktionen (Gruppenfunktionen) wie SUM, MIN, MAX, AVG und verwenden ZÄHLEN nur mit zwei Klauseln: SELECT und HAVING.

Die folgende Syntax veranschaulicht die Verwendung der HAVING-Klausel:

 SELECT column_lists, aggregate_function (expression) FROM table_name WHERE conditions GROUP BY column_lists HAVING condition; 

Nehmen wir ein Beispiel, um diese Klausel zu verstehen. Hier betrachten wir die gleiche Tabelle Mitarbeiter zur Demonstration.

Wenn wir wollen um die Gesamtarbeitszeit für jeden Mitarbeiter zu ermitteln, dessen Arbeitszeit mehr als 6 Stunden beträgt , dann können wir die Aussage wie folgt verwenden:

 mysql&gt; SELECT name, SUM(working_hour) AS &apos;Total working hours&apos; FROM employees GROUP BY name HAVING SUM(working_hour) &gt; 6; 

Wir erhalten die folgende Ausgabe, in der wir die Gesamtarbeitszeit jedes Mitarbeiters sehen können:

WO vs. HABEN

Hauptunterschiede zwischen der WHERE- und der HAVING-Klausel

Die folgenden Punkte erläutern die Hauptunterschiede zwischen Datenbank und Schema:

  • Die WHERE-Klausel filtert einzelne Zeilen, während die HAVING-Klausel Gruppen und nicht jeweils eine Zeile filtert.
  • Wir können die WHERE-Klausel nicht mit Aggregatfunktionen verwenden, da sie zum Filtern einzelner Zeilen dient. Im Gegensatz dazu kann HAVING mit Aggregatfunktionen arbeiten, da es zum Filtern von Gruppen verwendet wird.
  • Zeilenoperationen werden von der WHERE-Klausel verarbeitet, während die HAVING-Klausel Spaltenoperationen für zusammengefasste Zeilen oder Gruppen verarbeitet.
  • WHERE steht vor GROUP BY, was bedeutet, dass die WHERE-Klausel Zeilen filtert, bevor Aggregatberechnungen durchgeführt werden. HAVING kommt nach GROUP BY, was bedeutet, dass die HAVING-Klausel Zeilen filtert, nachdem Aggregatberechnungen durchgeführt wurden. Folglich ist HAVING hinsichtlich der Effizienz langsamer als WHERE und sollte nach Möglichkeit vermieden werden.
  • Wir können die WHERE- und HAVING-Klausel in einer SELECT-Abfrage kombinieren. In diesem Fall wird zunächst die WHERE-Klausel verwendet, um einzelne Zeilen zu filtern. Anschließend werden die Zeilen gruppiert, Aggregatberechnungen durchgeführt und schließlich wird die HAVING-Klausel zum Filtern der Gruppen verwendet.
  • Die WHERE-Klausel ruft die gewünschten Daten basierend auf der angegebenen Bedingung ab. Andererseits ruft die HAVING-Klausel zuerst die gesamten Daten ab und dann erfolgt die Trennung basierend auf der angegebenen Bedingung.
  • Ohne eine SELECT-Anweisung können wir die HAVING-Klausel nicht verwenden. Umgekehrt können wir ein WHERE mit SELECT-, UPDATE- und DELETE-Anweisungen verwenden.
  • Die WHERE-Klausel ist ein Vorfilter, während die HAVING-Klausel ein Nachfilter ist.

Vergleichstabelle WO vs. HABEN

In der folgenden Vergleichstabelle werden die wichtigsten Unterschiede kurz erläutert:

xd xd Bedeutung
Vergleichsbasis WHERE-Klausel HAVING-Klausel
Definition Es dient zur Filterung einzelner Reihen. Es wird zur Filterung von Gruppen verwendet.
Basic Es wird in Zeilenoperationen implementiert. Es wird in Spaltenoperationen implementiert.
Datenabruf Die WHERE-Klausel ruft die spezifischen Daten aus bestimmten Zeilen basierend auf der angegebenen Bedingung ab Die HAVING-Klausel ruft zunächst die vollständigen Daten ab. Anschließend werden sie entsprechend der gegebenen Bedingung getrennt.
Aggregatfunktionen Die WHERE-Klausel erlaubt keine Arbeit mit Aggregatfunktionen. Die HAVING-Klausel kann mit Aggregatfunktionen arbeiten.
Fungieren als Die WHERE-Klausel fungiert als Vorfilter. Die HAVING-Klausel fungiert als Nachfilter.
Benutzt mit Wir können die WHERE-Klausel mit den SELECT-, UPDATE- und DELETE-Anweisungen verwenden. Die HAVING-Klausel kann nur mit der SELECT-Anweisung verwendet werden.
GRUPPIERE NACH Die GROUP BY-Klausel kommt nach der WHERE-Klausel. Die GROUP BY-Klausel steht vor der HAVING-Klausel.

Abschluss

In diesem Artikel haben wir einen Vergleich zwischen der WHERE- und der HAVING-Klausel durchgeführt. Hier kommen wir zu dem Schluss, dass beide Klauseln beim Filtern der Daten auf die gleiche Weise funktionieren, mit der Ausnahme, dass einige zusätzliche Funktionen die HAVING-Klausel beliebter machen. Wir können effizient mit Aggregatfunktionen in der HAVING-Klausel arbeiten, während WHERE keine Aggregatfunktionen zulässt.