it-swarm.com.de

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

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

76
Aarti

in Ordnung:

AUS&JOINs bestimmen und filtern Zeilen
WOBEIweitere Filter für die Zeilen sind
GROUP BY fasst diese Zeilen in Gruppen zusammen
MITfiltert Gruppen
ORDER BY ordnet die verbleibenden Zeilen/Gruppen an
LIMITfiltert die verbleibenden Zeilen/Gruppen

151
KM.

WHERE ist zuerst, dann GRUPPEN Sie das Ergebnis der Abfrage und nicht zuletzt wird die HAVING-Klausel verwendet, um das gruppierte Ergebnis zu filtern. Dies ist die "logische" Reihenfolge, ich weiß nicht, wie dies technisch in der Engine implementiert ist.

7
Matthias Meid

Hier ist die komplette 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 GROUP BY, HAVING and WHERE verstehen.

1.  WHERE
2.  GROUP BY
3.  HAVING

Weitere Informationen dazu von Microsoft

6
Md. Suman Kabir

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

Ich habe versucht, online eine Referenz zu finden, die die gesamte Sequenz auflistet (d. H. "SELECT" kommt ganz unten), aber ich kann sie nicht finden. Es wurde in einem Buch "Inside Microsoft SQL Server 2005" beschrieben, das ich vor nicht allzu langer Zeit von Solid Quality Learning gelesen habe

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

2
AdaTheDev

In der folgenden Reihenfolge

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

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

Where
Group By
Having

Oder

Where 
Having
Group by
1
Jim Chen

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

  • WHERE: Die JOIN-Operationen müssen ausgeführt werden.
  • GROUP BY : Sie geben Gruppieren nach an, um die Ergebnisse auf dem Join zu "gruppieren". Dann muss es nach der JOIN-Operation nach der WHERE-Verwendung erfolgen.
  • MIT: HAVING dient zum Filtern, wie GROUP BY-Ausdrücke sagen. Dann wird es nach GROUP BY ausgeführt.

Die Reihenfolge ist WO, GROUP BY und HAVING.

1
FerranB

Eine Klausel kann vor/vor der Gruppenklausel kommen.

Beispiel: Select * FROM test_std; ROLL_NO SNAME DOB-TEACH 


     1 John       27-AUG-18 Wills     
     2 Knit       27-AUG-18 Prestion  
     3 Perl       27-AUG-18 Wills     
     4 Ohrm       27-AUG-18 Woods     
     5 Smith      27-AUG-18 Charmy    
     6 Jony       27-AUG-18 Wills     
       Warner     20-NOV-18 Wills     
       Marsh      12-NOV-18 Langer    
       FINCH      18-OCT-18 Langer    

9 Zeilen ausgewählt. 

wähle Teach, Count () Count von test_std mit Count ()> 1group durch TEACH

LEHRZÄHLER


Langer 2 Wills 4

0
manoj remala