次の形式のテーブルがあります。
id | title
---+----------------------------
1 | php jobs, usa
3 | usa, php, jobs
4 | ca, mysql developer
5 | developer
タイトル欄で最も人気のあるキーワードを取得したいので、ガイドをお願いします。
SELECT title 1, COUNT(*) FROM table GROUP BY title 1
編集
正規化されていないテーブルを編集して提示したので、正規化することをお勧めします。
キーワードのリストがある場合は、次のことができます。
select kw.keyword, count(*)
from t cross join
keywords kw
on concat(', ', t.title, ',') like concat(', ', kw.keyword, ',')
ただし、他の人が述べたように、非リレーショナル データベース設計があります。タイトルのキーワードは、カンマ区切りのリストとしてではなく、別々の行に格納する必要があります。
データが小さい (数十万行以下) 場合は、Excel に入力し、テキストから列への変換機能を使用し、キーワードを再配置して、データベースに新しいより適切なテーブルを作成できます。
データベースを変更する必要があります。次のようなものが必要です。
items
+----+---------------+
| id | title |
+----+---------------+
| 1 | something |
| 3 | another thing |
| 4 | yet another |
| 5 | one last one |
+----+---------------+
keywords
+----+-----------------+
| id | keyword |
+----+-----------------+
| 1 | php jobs |
| 2 | usa |
| 3 | php |
| 4 | jobs |
| 5 | ca |
| 6 | mysql developer |
| 7 | developer |
+----+-----------------+
items_to_keywords
+---------+------------+
| item_id | keyword_id |
+---------+------------+
| 1 | 1 |
| 1 | 2 |
| 3 | 2 |
| 3 | 3 |
| 3 | 4 |
| 4 | 5 |
| 4 | 6 |
| 5 | 7 |
+---------+------------+
利点がわかりますか?関係を築く能力は、ここで活用すべきものです。