Ich bin nur verwirrt mit der Ausführungssequenz einer SQL-Abfrage, wenn wir GROUP BY und HAVING mit einer WHERE-Klausel verwenden. Welches wird zuerst ausgeführt? Wie ist die Reihenfolge?
sql
sql-server
sql-server-2005
Jonathan Leffler
quelle
quelle
SET SHOWPLAN_ALL ON
Hier ist die vollständige Sequenz für SQL Server:
Aus der obigen Liste können Sie leicht die Ausführungsreihenfolge ersehen,
GROUP BY, HAVING and WHERE
deren:Weitere Informationen dazu erhalten Sie von Microsoft
quelle
SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col = @val
Hier kommt ON nach dem Beitritt und select kommt zuerst, irgendwelche Erklärungen?FROM
zuerst aus, dannON
und so weiter.WO ist zuerst, dann gruppieren 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.
quelle
Ich denke, es ist in der Engine implementiert, wie Matthias sagte: WO, GRUPPE NACH, HABEN
Ich habe versucht, online eine Referenz zu finden, die die gesamte Sequenz auflistet (dh "SELECT" wird ganz unten angezeigt), 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
Bearbeiten: Link gefunden: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx
quelle
In Oracle 12c können Sie Code in der folgenden Reihenfolge ausführen:
Oder
quelle
Überlegen Sie, was Sie tun müssen, wenn Sie Folgendes implementieren möchten:
Die Reihenfolge ist WO, GRUPPE NACH UND HABEN.
quelle
In der unten angegebenen Reihenfolge
quelle
Die Klausel kann vor / vor der Gruppe durch Klausel stehen.
Beispiel: Wählen Sie * FROM test_std; ROLL_NO SNAME DOB TEACH
9 Zeilen ausgewählt.
Wählen Sie Teach, Count ( ) Count aus test_std mit count ( )> 1 Gruppe nach TEACH.
LEHRZÄHLER
Langer 2 Testamente 4
quelle
Dies ist die SQL-Ausführungsreihenfolge einer Abfrage.
Sie können die Ausführungsreihenfolge anhand von Beispielen aus diesem Artikel überprüfen .
Für Ihre Frage könnten die folgenden Zeilen hilfreich sein und direkt aus diesem Artikel stammen .
Verweise:-
quelle
SELECT
FROM
Joins
WHERE
GROUP Durch
MIT
ORDER BY
quelle