Кількість випадків, коли кількість MySQL перевищує 2


91

У мене є така структура таблиці

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

Таблиця заповнюється словами нижньою літерою даного тексту, тому текст

Привіт до побачення привіт

призведе до

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

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

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

що, звичайно, є настільки неправильним і надзвичайним перевантаженням, коли стіл великий. Будь-яка ідея про те, як досягти такої мети? У наведеному прикладі inhere-above я би очікував 1


Хтось ще бачить підкреслення як "провисання" мотузкового мосту?
крапелька

Відповіді:


228

Щоб отримати список слів, що з’являються більше одного разу, разом із тим, як часто вони трапляються, використовуйте комбінацію 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

1
Просто аддон, ви можете використовувати псевдонім і для того, щоб "мати". Як і ВИБРАТИ слова, БРАТИ (*) ЯК cnt ВІД слів ГРУПА ЗА СЛОВОМ, ЩО МАЄ cnt> 1
Vaibhav Jain


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.