2

我有一张表,newsPosts我在该表中有一个列tags。标签列包含comma(,)这样的单独标签。

tag1,tag2,tag3

在另一个表中,我在标签列下列出了所有标签,如下所示:

标签

tag1
tag2
tag3
tag4
.
.
.
. 

我想从新闻帖子表中查找带有say tag2 标记的帖子数量。

我怎样才能做到这一点 ?我在用mysql 5.0

编辑 ::

我想要做的是 ::: 查找使用次数最多的标签来标记新闻帖子。

像这样 :

    tag1 x 100 times
    tag2 x 1000times
                 .
                 .
    tagN x 500 times 

tag2 应该出现在结果的顶部。

4

4 回答 4

2

说啊

SELECT * FROM newsPosts WHERE tags LIKE '%tag2%'

在 sqlfiddle 演示

于 2012-07-24T13:51:26.107 回答
1

这应该有效:

SELECT * FROM newPosts WHERE tags LIKE "%tag2%"; 
于 2012-07-24T13:49:31.530 回答
1

它应该适用于所有标签tags table

SELECT tag, (SELECT COUNT(1) 
             FROM tag_newPosts t2
             WHERE t2.tag LIKE CONCAT('%',t1.tag,'%')) AS tag_count
FROM tags t1;
于 2012-07-24T13:55:14.023 回答
1

您可以使用正则表达式进行查询:

select *
from newsPosts
where tags regexp '(^|,)tag2(,|$)'

此表达式可防止包含在其他标签中的标签进入查询结果。例如,它将选择带有 的项目tag2,但不选择带有 的项目mytag22

于 2012-07-24T13:57:05.303 回答