HAVING
фильтрует результаты после GROUP BY
.Следовательно, он фильтрует по одной строке на группу.
У HAVING
могут быть выражения агрегации, которых нет в SELECT
.Они неявно включены в агрегирование, хотя их нет в наборе результатов.
MySQL расширяет предложение HAVING
.Когда нет агрегации, он ведет себя как WHERE
, за исключением того, что допускает псевдонимы столбцов.
MySQL также расширяет GROUP BY
, чтобы включать неагрегированные столбцы.Вы можете думать о них как о функции агрегирования ANY()
, которая возвращает значение для этого выражения из любой строки в группе.