Mysql
 sql >> Database >  >> RDS >> Mysql

DOVE vs AVERE

Perché è necessario posizionare le colonne che crei tu stesso (ad esempio "seleziona 1 come numero") dopo HAVING e non WHERE in MySQL?

WHERE viene applicato prima di GROUP BY , HAVING viene applicato dopo (e può filtrare sugli aggregati).

In generale, puoi fare riferimento ad alias in nessuna di queste clausole, ma in MySQL consente di fare riferimento a SELECT alias di livello in GROUP BY , ORDER BY e HAVING .

E ci sono aspetti negativi invece di fare "WHERE 1" (scrivendo l'intera definizione invece del nome di una colonna)

Se l'espressione calcolata non contiene aggregati, inseriscila in WHERE molto probabilmente sarà più efficiente.