Статьи / MySQL


HAVING

HAVING - применяется для фильтрации функций и столбцов сгруппированных при помощи GROUP BY указанных в SELECT.


Другими словами применяется для агрегатных функций(COUNT(), MAX() ...) и столбцов указанных в выражении SELECT и обработанных GROUP BY. Если нужно использовать что-то, что не указанно в SELECT, то лучше использовать WHERE.

Порядок выполнения такой:
1. В SELECT указываем нужные столбцы или агрегатные функции(то с чем будем работать в GROUP BY и HAVING)
2. В GROUP BY пишем по какому столбцу или функции их группируем
3. В HAVING пишем условие фильтровки результата GROUP BY

Применяется последним и не оптимизируется. При использовании не по назначению на больших таблицах будут жуткие тормоза.

SELECT COUNT(*) AS `c`, `title` FROM `razdel` GROUP BY `sort` HAVING `c` > 1;


Здесь мы создаём псевдоним:
COUNT(*) AS `c`

который в дальнейшем используем в выражении:
HAVING `c` > 1;

// идентично:
// HAVING COUNT(*) > 1;