DataBoosters
SQL
Saltar+6 XP

Escribes SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY, en ese orden en el papel.

Mira en qué orden se EJECUTA de verdad.

Se escribe: SELECT primero

Así se lee y se escribe una consulta, de arriba hacia abajo

Se ejecuta distinto

El motor procesa FROM, luego WHERE, luego GROUP BY, luego HAVING, luego SELECT, y al final ORDER BY

Por eso el alias no sirve en WHERE

Un alias se crea en el paso de SELECT, que se ejecuta DESPUÉS de WHERE: WHERE todavía no lo conoce

El detalle que importa

El orden de ejecución explica varias reglas que parecían arbitrarias

Por qué WHERE no puede usar COUNT(*), por qué HAVING sí puede, por qué un alias de SELECT no funciona en WHERE: todo viene del mismo orden real de ejecución.