Количество экземпляров MySQL больше 2
У меня есть следующая структура таблицы
+ id + word +
+------+--------+
Таблица заполняется словами в нижнем кадре заданного текста, поэтому текст
Привет, привет, привет,
приведет к
+ id + word +
+------+--------+
+ 1 + hello +
+------+--------+
+ 2 + bye +
+------+--------+
+ 3 + hello +
+------+--------+
Я хочу сделать запрос SELECT, который вернет количество слов, которые будут повторяться как минимум два раза в таблице (например, привет)
SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1
который, конечно, настолько ошибочен и супер перегружен, когда таблица большая. Любая идея о том, как достичь такой цели? В данном примере выше, я ожидал бы 1
Ответы
Ответ 1
Чтобы получить список слов, которые появляются несколько раз вместе с тем, как часто они происходят, используйте комбинацию 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
Ответ 2
SELECT count(word) as count
FROM words
GROUP BY word
HAVING count >= 2;
Ответ 3
SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1