如何在MySQL数据库表列中查找最常用的单词

时间:2012-06-26 14:13:30

标签: php mysql sql

我有以下格式的表格:

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

我希望在标题字段中获得最热门的关键字,请指导。

4 个答案:

答案 0 :(得分:2)

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

修改

由于您已编辑并呈现了非规范化表格,我建议您对其进行规范化。

答案 1 :(得分:1)

如果您有关键字列表,则可以执行以下操作:

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

正如其他人所提到的,你有一个非关系数据库设计。标题中的关键字应存储在单独的行中,而不是以逗号分隔的列表存储。

如果您的数据很小(几十万行或更少),您可以将其放入Excel,使用text-to-columns函数,重新排列关键字,并在数据库中创建一个新的更好的表。 / p>

答案 2 :(得分:1)

您需要修改数据库。你应该有这样的东西:

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

你看到了优势吗?建立关系的能力是你应该在这里利用的。

答案 3 :(得分:0)