tener
Será lento, pero having la cláusula se ejecutará después todas las selecciones, uniones, dónde y agrupar por han terminado y están completamente resueltos.
El único problema es que having no utiliza un índice, mientras que where utiliza un índice.
SELECT
ranking stuff
FROM
lot of tables
WHERE simple_condition
HAVING filters_that_run_last
Haga que sus uniones sean explícitas
Tenga en cuenta que no tiene que mezclar uniones explícitas e implícitas.
Si quiere una unión cruzada, puede usar la cross join palabra clave.
....
) AS Ranking
CROSS JOIN (SELECT @curr := null, @prev := null, @rank := 0) InitVars
WHERE
Ranking.regional_id = 1003