Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ONDE vs TER


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.