データベースに次のテーブルがあります。データベーステーブル内の特定の単語の出現数を取得するクエリ
users ----------------- | id | username | ----------------- | 1 | goje | | 2 | john | | 3 | henry | ----------------- comments ------------------------------------------------- | id | uid | comment | ------------------------------------------------- | 1 | 1 | One who works hard is the one who | | | | succeeds | | 2 | 1 | This one was the best. | | 3 | 2 | You are one of my best friends. | | 4 | 3 | He was the one who bought this one.| -------------------------------------------------
ここで、指定された単語が「1」であると仮定します。私は、私のユーザーのテーブル内の各ユーザーのこの単語の出現数を知ることができるMySQLのクエリを持っていると思います。 Iこの場合、結果は
-------------------- | username | count | -------------------- | goje | 3 | -> 2 in first comment and 1 in second | henry | 2 | -> 2 in henry's only comment | john | 1 | --------------------
親切に私はどのように私はこの使用してSQLを達成することができます知っているようでなければなりません。ありがとう!! REGEXPのアプローチが少ないか、より高価である場合、私は知らない
SELECT
users.username AS username,
round(sum((LENGTH(comments.comment) - LENGTH(REPLACE(LOWER(comments.comment),"one", "")))/LENGTH("one")), 0) AS count
FROM users
INNER JOIN comments ON comments.uid = users.id
GROUP BY users.id
ORDER BY count DESC;
:
私はあなたがregexpを使ってよくある質問だと思っています:http://dev.mysql.com/doc/refman/5.1/en/regexp.html –
削除されたクエリは、 :最初のコメントで2。それは、カウントではなく、単語ではなくレコードをカウントするため、ただ1を返します。これを行う唯一の方法は、REGEXPのようにテキストを解析することです。 –
http://stackoverflow.com/questions/738282/how-do-you-count-the-number-of-occurrences-of-a-certain-substring-in-a-sql-varch –