MySQLは2より大きいオカレンスをカウントします


91

次のテーブル構造があります

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

テーブルには、特定のテキストの下位casにある単語が含まれるため、テキスト

こんにちは、こんにちは

結果として

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

テーブルで少なくとも2回繰り返される単語の数を返すSELECTクエリを作成したい(helloなど)

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

もちろん、これは非常に間違っており、テーブルが大きい場合はスーパーオーバーロードになります。そのような目的を達成する方法について何か考えはありますか?上記の例では、1を期待します


「垂れ下がる」ロープブリッジのようにアンダースコアが表示されている人はいますか?
液滴

回答:


227

複数回出現する単語とその出現頻度のリストを取得するには、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
アドオンだけで、エイリアスを「持つ」にも使用できます。SELECTワードと同様に、COUNT(*)AS cnt FROMワードGROUP BYワードHAVING cnt> 1
Vaibhav Jain

17
SELECT count(word) as count 
FROM words 
GROUP BY word
HAVING count >= 2;

CodeIgniterも持つことをサポートしているので、これは完璧でした。おかげで
ウォン6月ペ・

6

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.