我有以下格式的表格:
id | title
---+----------------------------
1 | php jobs, usa
3 | usa, php, jobs
4 | ca, mysql developer
5 | developer
我希望在标题字段中获得最热门的关键字,请指导。
答案 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)