Ich habe die folgende Tabellenstruktur
+ id + word +
+------+--------+
Die Tabelle wird mit den Wörtern im unteren Fall eines bestimmten Textes gefüllt, also mit dem Text
Hallo tschüss hallo
würde dazu führen
+ id + word +
+------+--------+
+ 1 + hello +
+------+--------+
+ 2 + bye +
+------+--------+
+ 3 + hello +
+------+--------+
Ich möchte eine SELECT-Abfrage erstellen, die die Anzahl der Wörter zurückgibt, die mindestens zweimal in der Tabelle wiederholt werden (wie Hallo).
SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1
Das ist natürlich so falsch und super überladen, wenn der Tisch groß ist. Irgendeine Idee, wie man einen solchen Zweck erreicht? In dem oben angegebenen Beispiel würde ich 1 erwarten
Antworten:
Verwenden Sie eine Kombination aus GROUP BY und HAVING, um eine Liste der Wörter zu erhalten, die mehrmals vorkommen, zusammen mit der Häufigkeit ihres Auftretens:
Um die Anzahl der Wörter in der obigen Ergebnismenge zu ermitteln, verwenden Sie diese als Unterabfrage und zählen Sie die Zeilen in einer äußeren Abfrage:
quelle
quelle
SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1
quelle