/ / Wie lautet die Ausführungsreihenfolge der Group By-, Having- und Where-Klausel in SQL Server? - SQL, SQL-Server, SQL-Server-2005

Wie lautet die Ausführungsreihenfolge der Klauseln Group By, Have und Where in SQL Server? - SQL, SQL-Server, SQL-Server-2005

Ich bin nur verwirrt mit der Ausführungsreihenfolge einer SQL-Abfrage, wenn wir GROUP BY und HAVING mit einer WHERE-Klausel verwenden. Welches wird zuerst ausgeführt? Wie ist die Reihenfolge?

Antworten:

136 für die Antwort № 1

in Ordnung:

VON & BEITRETENs Zeilen bestimmen und filtern
WOHER Weitere Filter in den Zeilen
GRUPPIERE NACH kombiniert diese Zeilen in Gruppen
HABEN filtert Gruppen
SORTIEREN NACH ordnet die restlichen Zeilen / Gruppen an
GRENZE Filter für die verbleibenden Zeilen / Gruppen


7 für die Antwort № 2

WO ist zuerst, dann gruppieren Sie das Ergebnis derquery und last but not least wird die HAVING-Klausel verwendet, um das gruppierte Ergebnis zu filtern. Dies ist die "logische" Reihenfolge, ich weiß nicht, wie dies technisch im Motor umgesetzt wird.


4 für die Antwort № 3

Hier ist die vollständige Sequenz für SQL Server:

1.  FROM
2.  ON
3.  JOIN
4.  WHERE
5.  GROUP BY
6.  WITH CUBE or WITH ROLLUP
7.  HAVING
8.  SELECT
9.  DISTINCT
10. ORDER BY
11. TOP

Aus der obigen Liste können Sie also leicht die Ausführungsreihenfolge von verstehen GROUP BY, HAVING and WHERE welches ist :

1.  WHERE
2.  GROUP BY
3.  HAVING

Weitere Informationen erhalten Sie von Microsoft


2 für die Antwort № 4

Ich denke, es ist in der Engine implementiert, wie Matthias sagte: WO, GROUP BY, HAVING

Ich habe versucht, online eine Referenz zu finden, die auflistetDie gesamte Sequenz (d. h. "SELECT" steht ganz unten), kann jedoch nicht gefunden werden. Sie wurde in einem Buch "Inside Microsoft SQL Server 2005" beschrieben, das ich vor nicht allzu langer Zeit von Solid Quality Learning gelesen habe

Bearbeiten: Einen Link gefunden: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx


1 für die Antwort № 5

Überlegen Sie, was Sie tun müssen, wenn Sie Folgendes implementieren möchten:

  • WOHER: Die JOIN-Operationen müssen ausgeführt werden.
  • GRUPPIERE NACH: Sie geben Group by an, um die Ergebnisse des Joins zu "gruppieren". Dies muss nach der Operation JOIN nach der Verwendung von WHERE erfolgen.
  • HABEN: HAVING dient zum Filtern nach GROUP BY-Ausdrücken. Dann wird es nach GROUP BY ausgeführt.

Die Reihenfolge ist WO, GROUP BY und HAVING.


1 für die Antwort № 6

In der Reihenfolge unten

  1. FROM & JOIN
  2. WOHER
  3. GRUPPIERE NACH
  4. HABEN
  5. WÄHLEN
  6. SORTIEREN NACH
  7. GRENZE

1 für die Antwort № 7

In Oracle 12c können Sie beide Codes in der folgenden Reihenfolge ausführen:

Where
Group By
Having

Oder

Where
Having
Group by

-3 für die Antwort № 8

WÄHLEN
VON
JOINs
WOHER
Gruppiere nach
HABEN
SORTIEREN NACH