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.