Jestem po prostu zdezorientowany z sekwencją wykonywania zapytania SQL, gdy używamy GROUP BY i HAVING z klauzulą WHERE. Który z nich zostanie wykonany jako pierwszy? Jaka jest sekwencja?
sql
sql-server
sql-server-2005
Jonathan Leffler
źródło
źródło
SET SHOWPLAN_ALL ON
Oto pełna sekwencja dla serwera sql:
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
Z powyższej listy można więc łatwo zrozumieć sekwencję wykonywania,
GROUP BY, HAVING and WHERE
która jest następująca:Uzyskaj więcej informacji na ten temat od firmy Microsoft
źródło
SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col = @val
Tutaj ON pojawia się po dołączeniu, a wybór jest pierwszy. Jakieś wyjaśnienia?FROM
najpierw, a następnieON
i tak dalej.GDZIE jest pierwsze, następnie GRUPUJESZ wynik zapytania, a ostatnia, ale nie mniej ważna, klauzula HAVING jest brana do filtrowania zgrupowanego wyniku. To jest „logiczna” kolejność, nie wiem jak to jest technicznie zaimplementowane w silniku.
źródło
Myślę, że jest zaimplementowany w silniku, jak powiedział Matthias: WHERE, GROUP BY, HAVING
Próbowałem znaleźć w Internecie odnośnik zawierający całą sekwencję (tj. „WYBIERZ” znajduje się na samym dole), ale nie mogę go znaleźć. Zostało to szczegółowo opisane w książce „Inside Microsoft SQL Server 2005”, którą czytałem nie tak dawno temu, autorstwa Solid Quality Learning
Edycja: Znaleziono link: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx
źródło
W Oracle 12c możesz uruchomić kod w obu poniższych sekwencjach:
Lub
źródło
Zastanów się, co musisz zrobić, jeśli chcesz wdrożyć:
Kolejność to GDZIE, GRUPA WEDŁUG i POSIADA.
źródło
W poniższej kolejności
źródło
Posiadanie klauzuli może nastąpić przed / przed klauzulą group by.
Przykład: select * FROM test_std; ROLL_NO SNAME DOB TEACH
Wybrano 9 rzędów.
wybierz naucz, count ( ) count from test_std mając count ( )> 1 grupę według TEACH;
NAUCZ LICZENIE
Langer 2 testamenty 4
źródło
To jest kolejność wykonywania zapytania SQL,
Możesz sprawdzić kolejność wykonania na przykładach z tego artykułu .
Poniższe pytania mogą być pomocne i pochodzą bezpośrednio z tego artykułu .
Bibliografia:-
źródło
SELECT
FROM
JOIN
WHERE
GROUP BY
MIEĆ
ORDER BY
źródło