Количество вхождений MySQL больше 2


у меня есть следующая структура таблицы

+  id  +  word  +
+------+--------+

таблица заполняется словами в Нижнем cas данного текста, поэтому текст

привет пока привет

в результате

+  id  +  word  +
+------+--------+
+   1  + hello  +
+------+--------+
+   2  + bye    +
+------+--------+
+   3  + hello  +
+------+--------+

Я хочу сделать запрос SELECT, который вернет количество слов, которые повторяются не менее двух раз в таблице (например, hello)

SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1

что, конечно, так неправильно и супер перегрузка, когда таблица большая. Любая идея о том, как достичь такой цели? В данном примере здесь-выше, я ожидал бы 1

3 73

3 ответа:

чтобы получить список слов, которые появляются более одного раза вместе с тем, как часто они встречаются, используйте комбинацию GROUP BY и HAVING:

SELECT word, COUNT(*) AS cnt
FROM words
GROUP BY word
HAVING cnt > 1

чтобы найти количество слов в приведенном выше результирующем наборе, используйте его в качестве подзапроса и подсчитайте строки во внешнем запросе:

SELECT COUNT(*)
FROM
(
    SELECT NULL
    FROM words
    GROUP BY word
    HAVING COUNT(*) > 1
) T1
SELECT count(word) as count 
FROM words 
GROUP BY word
HAVING count >= 2;

SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1