Отправить заявку

HAVING в MySQL

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

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

Порядок выполнения такой HAVING в MySQL

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

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

SELECT COUNT(*) AS `row`, `title` FROM `table` GROUP BY `sort` HAVING `row` > 2;

Здесь мы создаём псевдоним:

COUNT(*) AS `row`

Который в дальнейшем используем в выражении:

HAVING `row` > 2;

Или можно написать идентично:

HAVING COUNT(*) > 2;
Другие публикации