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.