Simplemente estoy confundido con la secuencia de ejecución de una consulta SQL cuando usamos GROUP BY y HAVING con una cláusula WHERE. ¿Cuál se ejecuta primero? Cual es la secuencia?
sql
sql-server
sql-server-2005
Jonathan Leffler
fuente
fuente
SET SHOWPLAN_ALL ON
Aquí está la secuencia completa para el servidor SQL:
Entonces, de la lista anterior, puede comprender fácilmente la secuencia de ejecución de la
GROUP BY, HAVING and WHERE
cual es:Obtenga más información al respecto de Microsoft
fuente
SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col = @val
Aquí viene ON después de unirse, y seleccionar es lo primero, ¿alguna explicación?FROM
primero, luegoON
y así sucesivamente.DONDE es primero, luego AGRUPAS el resultado de la consulta, y por último, pero no menos importante, se toma la cláusula HAVING para filtrar el resultado agrupado. Este es el orden "lógico", no sé cómo se implementa técnicamente en el motor.
fuente
Creo que está implementado en el motor como dijo Matthias: DÓNDE, GRUPO POR, TENIENDO
Estaba tratando de encontrar una referencia en línea que enumerara la secuencia completa (es decir, "SELECT" aparece en la parte inferior), pero no puedo encontrarla. Fue detallado en un libro "Inside Microsoft SQL Server 2005" que leí no hace mucho, por Solid Quality Learning
Editar: Encontré un enlace: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx
fuente
En Oracle 12c, puede ejecutar código en cualquiera de las siguientes secuencias:
O
fuente
Piense en lo que debe hacer si desea implementar:
El orden es DONDE, AGRUPAR Y TENER.
fuente
En orden a continuación
fuente
Tener Cláusula puede venir antes / antes del grupo por cláusula.
Ejemplo: seleccione * FROM test_std; ROLL_NO SNAME DOB TEACH
9 filas seleccionadas.
seleccione enseñar, contar ( ) contar de test_std teniendo count ( )> 1 grupo por ENSEÑAR;
ENSEÑAR CONTEO
Langer 2 Testamentos 4
fuente
Este es el orden SQL de ejecución de una consulta,
Puede comprobar el orden de ejecución con ejemplos de este artículo .
Para su pregunta, las líneas siguientes pueden ser útiles y se obtienen directamente de este artículo .
Referencias: -
fuente
SELECCIÓN
DE
JOINs
DONDE
GROUP BY
HAVING
ORDER BY
fuente