Por que você precisa colocar colunas que você mesmo criou (por exemplo, "selecione 1 como número") depois de HAVING e não WHERE no MySQL?
WHERE
é aplicado antes de GROUP BY
, HAVING
é aplicado depois (e pode filtrar em agregados). Em geral, você pode fazer referência a aliases em nenhuma dessas cláusulas, mas
MySQL
permite referenciar SELECT
aliases de nível em GROUP BY
, ORDER BY
e HAVING
.
E existem desvantagens em vez de fazer "WHERE 1" (escrevendo toda a definição em vez de um nome de coluna)
Se sua expressão calculada não contiver nenhum agregado, coloque-a em
WHERE
cláusula provavelmente será mais eficiente.