HAVING
operuje na podsumowanym wierszu - WHERE
działa na całej tabeli przed GROUP BY
jest stosowany. (Nie możesz umieścić GROUP BY
na bok, HAVING
jest klauzulą zarezerwowaną do użytku z GROUP BY
- pomijając GROUP BY
nie zmienia ukrytej akcji, która ma miejsce za kulisami).
Należy również zauważyć, że z tego powodu WHERE
może używać indeksu, gdy HAVING
Nie mogę. (W super trywialnych niezgrupowanych zestawach wyników można teoretycznie użyć indeksu dla HAVING
, ale nigdy nie widziałem optymalizatora zapytań zaimplementowanego w ten sposób).