私は記事のタイトルに使用されている単語の表を持っています。私は、セットや記事のタイトルで最も使用されていない言葉を探したい。MySQLクエリ:使用されていない単語を最低限見つけよう
例:
タイトル:
"Congressman Joey of Texas does not sign bill C1234."
"The pretty blue bird flies at night in Texas."
"Congressman Bob of Arizona is the signs bill C1234."
表は以下が含まれます。この場合
表WORDS_LIST
----------------------------------------------------
| INDEX ID | WORD | ARTICLE ID |
----------------------------------------------------
| 1 | CONGRESSMAN | 1234 |
| 2 | JOEY | 1234 |
| 3 | SIGN | 1234 |
| 4 | BILL | 1234 |
| 5 | C1234 | 1234 |
| 6 | TEXAS | 1234 |
| 7 | PRETTY | 1235 |
| 8 | BLUE | 1245 |
| 9 | BIRD | 1245 |
| 10 | FLIES | 1245 |
| 11 | NIGHT | 1245 |
| 12 | TEXAS | 1245 |
| 13 | CONGRESSMAN | 1246 |
| 14 | BOB | 1246 |
| 15 | ARIZONA | 1246 |
| 16 | SIGNS | 1246 |
| 17 | BILL | 1246 |
| 18 | C1234 | 1246 |
----------------------------------------------------
、言葉記事の最小数で使用されるだろう「きれいな青、夜は、ハエ」。
このクエリを最適に作成する方法については、私に感謝します。これまでのところ私が始めたのは以下の通りです。 PHPで何かを書くこともできますが、クエリが高速になると考えました。
SELECT distinct a1.`word`, count(a1.`word`)
FROM mmdb.words_list a1
JOIN mmdb.words_list b1
ON a1.id = b1.id AND
upper(a1.word) = upper(b1.word)
where date(a1.`publish_date`) = '2017-06-09'
group by `word`
order by count(a1.`word`);
質問には何がありますか?あなたが望むものを返さないのですか?あなたが返すものの例を見せてもらえますか? –
'DISTINCT'は必要ありません。 'GROUP BY'はそれが別個であることを保証します。 – Barmar
なぜあなたは自分自身にテーブルを参加させていますか? – Barmar