#mysql #sql
Как задать максимальный и минимальный размеры группы, чтобы получить записи, где count < 5 и count > 2? На данный момент использую такой запрос: SELECT id, info, COUNT(*) as count FROM notification GROUP BY info ORDER BY count DESC; Пример: +----+-------+ | id | info | +----+-------+ | 1 | Admin | | 2 | User | | 3 | User | | 4 | User | | 5 | User | | 6 | User | | 7 | Admin | | 8 | Admin | | 9 | Test | | 10 | Test | +----+-------+ Желаемый вывод: +----+-------+--------+ | id | info | count | +----+-------+--------+ | 1 | Admin | 3 | +----+-------+--------+
Ответы
Ответ 1
Используйте параметр HAVING: SELECT id, info, COUNT(*) as count FROM notification GROUP BY info HAVING count(*) > 2 and count(*) < 5 ORDER BY count DESC; Пример на sqlfiddle.Ответ 2
Если таблица большая, то правильнее будет обернуть в другой запрос и написать условие в where. Работать будет быстрее. SELECT * FROM ( SELECT id, info, COUNT(*) as count FROM notification GROUP BY info ) a WHERE a.count > 2 AND a.count < 5
Комментариев нет:
Отправить комментарий