#mysql #sql
#mysql #sql
Вопрос:
Возможно ли сгруппировать результаты, а затем отфильтровать по количеству строк в группе?
Что-то вроде этого:
SELECT * FROM mytable WHERE COUNT(*) > 1 GROUP BY name
Ответ №1:
Вы хотите использовать фильтрацию по агрегатной функции.
SELECT name, COUNT(*)
FROM mytable
GROUP BY name
HAVING COUNT(*) > 1
Комментарии:
1. СУПЕРЗВЕЗДА! Как раз собираюсь это протестировать!
2. И предложение HAVING также должно предшествовать ORDER BY .
3. Вы также можете переименовать КОЛИЧЕСТВО (*) для удобства чтения.
SELECT name, count(*) cnt FROM mytable GROUP BY name HAVING cnt > 1
Ответ №2:
Вам нужно использовать HAVING
SELECT * FROM mytable GROUP BY name HAVING COUNT(*) > 1
Хотя, SELECT *
не имеет особого смысла, когда вы группируете. Я предполагаю, что это просто для примера
Ответ №3:
Вам нужно предложение HAVING.
SELECT *
FROM mytable
GROUP BY name
HAVING COUNT(*) > 1
Ответ №4:
Используйте having в своем запросе:
SELECT * FROM mytable GROUP BY name having COUNT(*) > 1