Hvorfor er det, du skal placere kolonner, du selv opretter (f.eks. "vælg 1 som tal") efter HAVING og ikke WHERE i MySQL?
WHERE
anvendes før GROUP BY
, HAVING
anvendes efter (og kan filtrere på aggregater).
Generelt kan du referere til aliaser i ingen af disse klausuler, men MySQL
tillader henvisning til SELECT
niveaualiasser i GROUP BY
, ORDER BY
og HAVING
.
Og er der nogle ulemper i stedet for at gøre "WHERE 1" (at skrive hele definitionen i stedet for et kolonnenavn)
Hvis dit beregnede udtryk ikke indeholder nogen aggregater, skal du sætte det i WHERE
klausul vil højst sandsynligt være mere effektiv.