2

次の形式のテーブルがあります。

id | title
---+----------------------------
1  | php jobs, usa
3  | usa, php, jobs
4  | ca, mysql developer
5  | developer

タイトル欄で最も人気のあるキーワードを取得したいので、ガイドをお願いします。

4

4 に答える 4

1
SELECT title 1, COUNT(*) FROM table GROUP BY title 1

編集

正規化されていないテーブルを編集して提示したので、正規化することをお勧めします。

于 2012-06-26T14:14:59.770 に答える
1

キーワードのリストがある場合は、次のことができます。

select kw.keyword, count(*)
from t cross join
     keywords kw
     on concat(', ', t.title, ',') like concat(', ', kw.keyword, ',')

ただし、他の人が述べたように、非リレーショナル データベース設計があります。タイトルのキーワードは、カンマ区切りのリストとしてではなく、別々の行に格納する必要があります。

データが小さい (数十万行以下) 場合は、Excel に入力し、テキストから列への変換機能を使用し、キーワードを再配置して、データベースに新しいより適切なテーブルを作成できます。

于 2012-06-26T14:24:55.183 に答える
0

データベースを変更する必要があります。次のようなものが必要です。

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          |
+---------+------------+

利点がわかりますか?関係を築く能力は、ここで活用すべきものです。

于 2012-06-26T14:27:05.530 に答える
0

以下を読んでください: http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

于 2012-06-26T14:18:22.633 に答える