J'ai la structure de table suivante
+ id + word +
+------+--------+
Le tableau est rempli avec les mots en minuscules d'un texte donné, donc le texte
Bonjour au revoir bonjour
entraînerait
+ id + word +
+------+--------+
+ 1 + hello +
+------+--------+
+ 2 + bye +
+------+--------+
+ 3 + hello +
+------+--------+
Je veux faire une requête SELECT qui retournera le nombre de mots qui se répètent au moins deux fois dans le tableau (comme bonjour)
SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1
ce qui est bien sûr si faux et surchargé lorsque la table est grande. Une idée sur la façon d'atteindre un tel objectif? Dans l'exemple donné ci-dessus, je m'attendrais à 1
Réponses:
Pour obtenir une liste des mots qui apparaissent plusieurs fois avec leur fréquence d'apparition, utilisez une combinaison de GROUP BY et HAVING:
Pour trouver le nombre de mots dans le jeu de résultats ci-dessus, utilisez-le comme sous-requête et comptez les lignes dans une requête externe:
la source
la source
SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1
la source