Estou apenas confuso com a sequência de execução de uma consulta SQL quando usamos GROUP BY e HAVING com uma cláusula WHERE. Qual é executado primeiro? Qual é a sequência?
sql
sql-server
sql-server-2005
Jonathan Leffler
fonte
fonte
SET SHOWPLAN_ALL ON
Aqui está a sequência completa para o servidor sql:
Portanto, a partir da lista acima, você pode entender facilmente a sequência de execução,
GROUP BY, HAVING and WHERE
que é:Obtenha mais informações sobre isso com a Microsoft
fonte
SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col = @val
Aqui o ON vem depois do join, e o select vem primeiro, alguma explicação?FROM
primeiro, depoisON
e assim por diante.WHERE é primeiro, então você GROUP o resultado da consulta e, por último, mas não menos importante, a cláusula HAVING é usada para filtrar o resultado agrupado. Essa é a ordem "lógica", não sei como isso é implementado tecnicamente no motor.
fonte
Acho que está implementado no motor como o Matthias disse: ONDE, GROUP BY, HAVING
Estava tentando encontrar uma referência online que liste toda a sequência (ou seja, "SELECT" vem na parte inferior), mas não consigo encontrar. Foi detalhado em um livro "Inside Microsoft SQL Server 2005" que li não faz muito tempo, da Solid Quality Learning
Editar: encontrou um link: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx
fonte
No Oracle 12c, você pode executar o código nas duas sequências abaixo:
Ou
fonte
Pense no que você precisa fazer se deseja implementar:
A ordem é ONDE, GROUP BY e HAVING.
fonte
Na ordem abaixo
fonte
Ter Cláusula pode vir antes / antes da cláusula group by.
Exemplo: select * FROM test_std; ROLL_NO SNAME DOB TEACH
9 linhas selecionadas.
selecione ensinar, contar ( ) contar de test_std tendo contagem ( )> 1 grupo por TEACH;
TEACH COUNT
Langer 2 Wills 4
fonte
Esta é a ordem SQL de execução de uma consulta,
Você pode verificar a ordem de execução com exemplos deste artigo .
Para sua pergunta, as linhas abaixo podem ser úteis e obtidas diretamente deste artigo .
Referências:-
fonte
SELECIONAR
DE
JOINs
ONDE
GROUP BY
TENDO
ORDER BY
fonte