1. ホーム
  2. mysql

[解決済み] MySQLのカウントオカレンス数が2より大きい

2022-11-14 02:33:25

質問

以下のようなテーブル構造を持っています。

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

テーブルは、指定されたテキストの小文字の単語で埋められるので、テキストは

こんにちは、さようなら、こんにちは

は、結果として

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

テーブルの中で2回以上繰り返される単語の数を返すSELECTクエリを作りたい(helloとか)。

SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>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